Hibernate多表关联操作

 

一、多对一(many-to-one

在映射文件中配置< many-to-one >标签,通过设置该标签的name属性与实体类中的对应属性连接(name属性值与实体属性名相同)。Hibernate利用反射技术根据对应的实体类中的属性的类型找到对应的表。

employee映射中配置:

< many-to-one name=”dept” column=”dept_id”>

 

employee 实体中有属性 Department dept 对象中这样的引用对应到数据库中就是主外键的关联

实体Department有映射

上面的过程创建外键(dept的主键)

二、一对多(many-to-one

实体类(dept)中的对象集合属性。Set<Employee> empl

dept 映射值配置

<set name=”empl”>   //映射集合

         <key column=”depart_id”/>

         <one-to-many class=”Employee”/>  //描述泛型

</set>

Employee 映射中的配置

< many-to-one name=”dept” column=”depart_id”>

三、一对一(one-to-one

是分主从对象的。

基于主键  通过主键确定一一对应

         在从对象IdCard

         <id name=”id”>

                            <generator class=”foreign”>  // 由于从对象的主键是从主对象获得的所以保存从对象时不能不设置从对象对应的主对象

                       <param name=”property”>person</param>

                   </generator>

         </id>

         <one-to-one name=”person”>

在主对象 Person

         <id name=”id”>

                   <generator class=”native”/>     

         </id>

         <one-to-one name=”IdCard”>

 

基于外键  从对象通过外键,主对象通过从对象外键确定一一对应

在从对象中     id恢复

<many-to-one name=”person” column=”person_id” unique=”true” not-null”true”>

在主对象中

<one-to-one name=”idCard” property-ref=”person”>

 

四、多对多(many-to-many

在学生实体映射中

<set name=”teacher” table=”teacher_student”>

         <key column=”teacher_id”/>

         <many-to-many class=”Student” column=”student_id”/>

</set>

在老师实体映射中

<set name=”student” table=”teacher_student”>

         <key column=”student_id”/>

         <many-to-many class=”Teacher” column=”teacher_id”/>

</set>

五、组件关联映射

就是复杂属性的映射,这个属性不值得使用上面的映射。

<component name=”name”>

         <property name=”firstName” column=”first_name”/>

         <property name=”laseName” column=”last_name”/>

</component>

六、级联和关系维护

谁维护关系谁就是持久状态的,联系在一起的实体发生的任何变化都会引发关系维护端的update。关系维护端是执行set的那端。

CascadeinverseCascade用来说明当对主对象进行某种操作时是否对其关联的从对象也做类似操作,常用的cascade有:none,all,save-update,delete,lock,refresh,evict,replicate,persist,merge,delete-orphan.

一般对many-to-one,many-to-many不设置级联,在one-to-one,one-to-many中设置级联

Inverse表示是否放弃维护关联关系,用在集合中,不能在有序的集合中使用。

在多对多关系中只能由一端维护关系,因为涉及到中间表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值