2、双向关联
双向关联在两端都知道对方的存在,同时也是由“一对多”和“多对一”两个关联关系组合而成的。在实现上也就是说,POJO的两个类里面都要有一个属性来保存对方的值。
public class Message {
private int msgId;
private String ttl;
private String desc;
private Date date;
private UserInfo user;
这时要在“多”的一端加上<many-to-one>节点,
<many-to-one name="user" class="xiaojin.hibernate.entity.UserInfo" column="usr_id" cascade="none"></many-to-one>
其中个属性
name:标明关联的一端
column:外键
cascade:是指级联操作
在“一“的一端配置:
<set name="messages" order-by="usr_id" cascade="all" inverse="true" >
<key column="usr_id" />
<one-to-many class="xiaojin.hibernate.entity.Message" />
</set>
可以看到这里加了一个属性inverse="true" 意为反转,在双向关联中inverse="false" 的一方为主动方负责维护关联关系,默认值为false
在上述配置中,主动方在message一方,也就是说在message持久化过程中,message会主动去获取相关的user 对象的usr_id 作为自己的外键usr_id。
关于级联操作:
级联操作是通过cascade来进行配置的。
从常识来讲对于级联的操作主动方都应该是以的一段的,举个例子来讲,当我们要删除一条message时是不允许其删除与之相关联的user的,然而当删除一个user必要将与其相关的message删除掉。在上面的配置中cascade="none"就是为了这个需求,当然在实际情况下还要同需求相联系来具体设置,hibernate的配置还是很灵活的。
测试方法:
public static void saveMessagesAndUser(){
UserInfo user= new UserInfo();
user.setName("xiaofei");
user.setPassword("xiaofei");
Set<Message> msgs = new HashSet<Message>();
Message msg = new Message();
msg.setTtl("msg_xiaofei");
msg.setDesc("desc");
msgs.add(msg);
user.setMessages(msgs);
msg.setUser(user);
save(user);
}
注意上面加粗的两行,这时我们用的已经是双向关联了!
关于在应用中是应该使用单行关联还是双向关联:
hibernate的建议是使用双向关联。
关于一对多还是多对一:
多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一
一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多
也就是说一对多和多对一的映射策略是一样的,只是站的角度不同
分享到:
相关推荐
hibernate关联关系简单项目,也可以只运行Java文件不用JSP页面,运用MySQL
hibernate关联关系
Hibernate 关联关系映射分类
详细讲解hibernate的关联关系,以及用实例讲解,非常详细
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的关联关系,...
Hibernate关联关系练习【全】
Hibernate关联关系映射 单向关联 │ ├─ 一对一外键单向关联 │ ├─ 一对一主键单向关联 │ ├─ 一对一连接表单向关联 │ ├─ 一对多外键单向关联 │ ├─ 一对多连接表单向关联 │ ├─ 多对一外键单向关联 │ ...
Hibernate关联关系.docHibernate关联关系.doc
映射一对多关联关系 以Customer和Order为例: 一对多: 每个Customer可以有一个或者多个Order,因此Customer中应该有一个集合类型的属性,来引用所有关联的Order对象。 多对一。全实例讲解
Hibernate4中映射关系图解。
Hibernate关联关系总结 一对多 多对一 多对多
hibernate里关联关系映射,各种关系解析,帮助大家搞清楚hibernate的关系映射
大致总结了一下Hibernate关联关系。提供相关的一些例子进行测试。
Hibernate关联关系映射.CHM Hibernate文档相关
针对hibernate中关于对象间的关联关系的配置
讲诉了关联的创建和使用 整理成了一份txt的文档 整个创建到使用的步骤都写在里面了
hibernate关联关系多对一实例
Hibernate关联关系配置,一对一,一对多,多对多,联合主键等的配置
Hibernate关联关系映射实例速查,帮助初学者学习。
hibernate ORM的实例,包括一对一,一对多,多对一,多对多的各种实例。 还有一些HQL语句的写法