这种映射方式支持多态关联。如果在Company.hbm.xml文件中对employees集合设置了立即检索策略,那么Session的load()方法加载的Company对象的employees集合中包含所有关联的Employee对象。由于本书提供的Company.hbm.xml文件对employees集合设置了延迟检索策略,因此以上程序代码还通过Hibernate类的静态initialize()方法来显式初始化employees集合。
(4)运行saveEmployee(Employee employee)方法,它的代码如下:
tx = session.beginTransaction();
session.save(employee);
tx.commit();
|
在test()方法中,创建了一个HourlyEmployee实例,然后调用saveEmployee()方法保存这个实例:
Employee employee=new HourlyEmployee("Mary",300,company);
saveEmployee(employee);
|
Session的save()方法能判断employee变量实际引用的实例的类型,如果employee变量引用HourlyEmployee实例,就执行如下insert语句:
insert into EMPLOYEES(ID,NAME,RATE,EMPLOYEE_TYPE,CUSTOMER_ID)
values(5, 'Mary ',300, 'HE',1);
|
以上insert语句没有为SalariedEmployee类的salary属性对应的SALARY字段赋值,因此这条记录的SALARY字段为null。
(T117)
<<上一页
1
2
3
4
5
|