Hibernate学习随笔-----关系映射(1)单向N-1关联
来源:互联网 发布:易语言股票源码 编辑:程序博客网 时间:2024/05/16 09:11
单向N-1关联:只需要从N的一端可以访问1的一端
单向N-1的关系,如多个人对应同一个住址,只需从人的实体端可以找到对应的地址实体,无需关心某个地址的全部住户。
程序应该在N的一端的持久化类中增加一个属性,该属性引用的是1的一端的关联实体。
public class Person{
private Address address; //每个Person都单向的持有一个Address
public void setAddress(Address address){ this.address=address;}
public Address getAddress(){return this.address;}
}
pulic class Address{} //程序无需从Address访问Person,所以Address无需增加Person属性
1.无连接表的N-1关联
Person端增加了Address属性,该属性不是一个普通的组件属性,而是引用另一个持久化类的类,Hibernate使用<many-to-one>元素映射N-1的关联实体,直接采用<many-to-one>元素来映射关联实体将会在N的一端的数据表中增加一个外键列,用于参照主表记录。
注:直接使用<mang-to-one>元素来映射N-1关联时,Hibernate将无需使用连接表,直接使用外键关联策略来处理这种关联映射。
Person.hbm.xml
<class name="Person" table="person_inf">
<!--用映射N-1关联实体,指定关联实体类为Address,指定外键列名为address_id,并指定级联全部操作-->
<many-to-one name="address" cascade="all" class="Address" column="address_id"/>
</class>
注:在所有基于外键约束的关联关系中,都必须牢记:要么总是先持久化主表记录对应的实体,要么设置级联操作;否则当Hibernate试图插入从表记录时,如果发现该从表记录参照的主表记录不存在,那一定会抛出异常。
2.有连接表的N-1关联:使用于在底层数据库建模时使用连接表来建立外键关系映射的关联关系
如果需要使用连接表来映射单向N-1关联,则需要显示使用<join/>元素,该元素用于强制将一个类的属性映射到多张表中。使用<join/>元素时通常需要指定一个table属性,用于指定连接表的表名。
使用<join/>元素映射连接表时还需要外键关联,应在配置文件中增加<key/>子元素来映射外键,并为join元素增加<many-to-one>子元素,用于映射N-1的关联实体。
<class name="Person" table="person_inf">
<join table="person_address">
<key column="person_id/">
<many-to-one name="address" cascade="all" class="Address" column="address_id"/>
</join>
</class>
- Hibernate学习随笔-----关系映射(1)单向N-1关联
- Hibernate学习随笔-----关系映射(3)单向1-N关联
- Hibernate学习随笔-----关系映射(4)单向N-N关联
- Hibernate关系映射1:单向N-1关联
- Hibernate学习笔记-----关系映射(2)单向1-1关联
- Hibernate-映射关系- n->1(单向)
- 【hibernate】关联映射那些事(二)--单向1-N映射和单向N-N映射
- Hibernate关系映射——单向N-1关系映射
- Hibernate的关联映射(1)-单向N-1关联
- Hibernate的关联映射(3)-单向1-N关联
- 1011--映射一对多关联关系(.单向 n-1)
- 【hibernate】关联映射那些事(一)---单向N-1关联与单向1-1关联
- hibernate关联关系映射(1对1 单向 外键)
- Hibernate单向关联N-1
- Hibernate单向关联1-N
- Hibernate 单向N-1关联
- Hibernate关联关系之——单向n-1
- hibernate单向无连接表1—N关系映射
- Ajax跨域
- 浮点数的比较
- com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process
- 可以输出自己的源程序代码(quine)
- css学习绝对定位、相对定位
- Hibernate学习随笔-----关系映射(1)单向N-1关联
- Centos6.3编译安装nginx+php步骤
- 检测内存泄漏
- Println(Object)小贴士
- The content of the adapter has changed but ListView did not receive a notification,
- ubuntu svn 已跳过 'Admin/*****.php' -- 节点处于冲突状态
- 截屏
- 实现图片轮流滑动
- C语言中函数参数入栈的顺序