读书人

Hibernate中种的继承使用subclass实现

发布时间: 2012-09-18 16:21:42 作者: rapoo

Hibernate中类的继承使用subclass实现


类与表的关系:


Hibernate中种的继承使用subclass实现

*************

Employee.java

*************


Hibernate生成的sql语句为:

Hibernate: insert into employees (EMPLOYEE_NAME, SELL, type) values (?, ?, 1)
Hibernate: insert into employees (EMPLOYEE_NAME, SKILLER, type) values (?, ?, 2)
Hibernate: insert into employees (EMPLOYEE_NAME, type) values (?, 0)

Hibernate:
select
sale0_.EMPLOYEE_ID as EMPLOYEE1_0_0_,
sale0_.EMPLOYEE_NAME as EMPLOYEE3_0_0_,
sale0_.SELL as SELL0_0_
from
employees sale0_
where
sale0_.EMPLOYEE_ID=? and sale0_.type=1

Hibernate:
select
skill0_.EMPLOYEE_ID as EMPLOYEE1_0_0_,
skill0_.EMPLOYEE_NAME as EMPLOYEE3_0_0_,
skill0_.SKILLER as SKILLER0_0_
from
employees skill0_
where
skill0_.EMPLOYEE_ID=? and skill0_.type=2

Hibernate:
select
employee0_.EMPLOYEE_ID as EMPLOYEE1_0_0_,
employee0_.EMPLOYEE_NAME as EMPLOYEE3_0_0_,
employee0_.SELL as SELL0_0_,
employee0_.SKILLER as SKILLER0_0_,
employee0_.type as type0_0_
from
employees employee0_
where
employee0_.EMPLOYEE_ID=?

测试结果为:

Sale{id=1, name=sunliusell=300000}
Skill{id=2, name=wangwuskiller=java}
Employee{id=3, name=lisi}


PS:

采用这种方式的好处是数据处理的效率高;缺点是数据库的表结构不符合关系模型的设计理念,而且子类对应的字段不能强制为非空,如果要新增一个子类那么就必须更改表的结构即新增一列。


2楼zoulukantian2008前天 17:10
学习学习
1楼xzf19901108前天 14:45
呵呵,我也是刚开始学

读书人网 >软件架构设计

热点推荐