Hibernate关系映射1:单向N-1关联
来源:互联网 发布:微信淘宝客封号 编辑:程序博客网 时间:2024/05/20 22:02
单向N-1关联
单向N-1关系,比如多个人对应一个地址,只需从人实体端可以找到对应的地址实体,无须关系某个地址的全部住户。
单向 n-1 关联只需从 n 的一端可以访问 1 的一端。
域模型
从 Order 到 Customer 的多对一单向关联需要在Order 类中定义一个 Customer 属性, 而在 Customer 类中无需定义存放 Order 对象的集合属性
关系数据模型
ORDERS 表中的 CUSTOMER_ID 参照 CUSTOMER 表的主键
Demo
Hibernate 使用 元素来映射多对一关联关系 <many-to-one name="customer" class="Customer" column="CUSTOMER_ID" cascade="all" />
- name: 设定待映射的持久化类的属性的名字
- column: 设定和持久化类的属性对应的表的外键
- class:设定待映射的持久化类的属性的类型
- cascade:意味着系统将先自动级联插入主表记录,也就是说先持久化Customer对象,再持久化Person对象。开发时不建议使用该属性,建议使用手工的方式。
下面是实体对象,分为Customer(顾客)和Order(订单),其中订单和顾客是N-1关系。
public class Customer { private Integer customerId; private String customerName; //省去get和set方法}public class Order { private Integer orderId; private String orderName; private Customer customer; //省去get和set方法}Customer.hbm.xml
<hibernate-mapping> <class name="com.lihui.hibernate.single_n_1.Customer" table="CUSTOMERS"> <id name="customerId" type="java.lang.Integer"> <column name="CUSTOMER_ID" /> <generator class="native" /> </id> <property name="customerName" type="java.lang.String"> <column name="CUSTOMER_NAME" /> </property> </class></hibernate-mapping>
<span style="color: rgb(102, 102, 102); font-family: Verdana, 'Lantinghei SC', 'Hiragino Sans GB', 'Microsoft Yahei', Helvetica, arial, 宋体, sans-serif; font-size: 14px; line-height: 26px;"></span>
Order.hbm.xml
<hibernate-mapping package="com.lihui.hibernate.single_n_1"> <class name="Order" table="ORDERS"> <id name="orderId" type="java.lang.Integer"> <column name="ORDER_ID" /> <generator class="native" /> </id> <property name="orderName" type="java.lang.String"> <column name="ORDER_NAME" /> </property> <many-to-one name="customer" class="Customer" column="CUSTOMER_ID" cascade="all" /> </class></hibernate-mapping>
Junit Test 由于在Order.hbm.xml中配置了
cascade="all"
,所以只需要保存order对象即可,会首先自动保存级联的Customer对象。@Test public void testSave() { Customer customer = new Customer(); customer.setCustomerName("a"); Order order1 = new Order(); order1.setOrderName("A"); order1.setCustomer(customer); Order order2 = new Order(); order2.setOrderName("B"); order2.setCustomer(customer); session.save(order1); session.save(order2); }
原文转载于 http://wiki.jikexueyuan.com/project/hibernate_articles/N-1.html
0 0
- Hibernate学习随笔-----关系映射(1)单向N-1关联
- Hibernate关系映射1:单向N-1关联
- Hibernate学习随笔-----关系映射(3)单向1-N关联
- Hibernate-映射关系- n->1(单向)
- 【hibernate】关联映射那些事(二)--单向1-N映射和单向N-N映射
- Hibernate关系映射——单向N-1关系映射
- Hibernate的关联映射(1)-单向N-1关联
- Hibernate的关联映射(3)-单向1-N关联
- Hibernate学习随笔-----关系映射(4)单向N-N关联
- 1011--映射一对多关联关系(.单向 n-1)
- 【hibernate】关联映射那些事(一)---单向N-1关联与单向1-1关联
- Hibernate学习笔记-----关系映射(2)单向1-1关联
- hibernate关联关系映射(1对1 单向 外键)
- Hibernate单向关联N-1
- Hibernate单向关联1-N
- Hibernate 单向N-1关联
- Hibernate关联关系之——单向n-1
- hibernate单向无连接表1—N关系映射
- 程序的加载和执行(二)——《x86汇编语言:从实模式到保护模式》读书笔记22
- TRUNK的作用功能.什么是TRUNK
- 希尔排序【O(n^1.3)】
- android 双击事件的实现
- 【c++】字符串的冒泡排序【存疑,待查】
- Hibernate关系映射1:单向N-1关联
- 二叉树的前序、中序、后序遍历
- zigbee协议解析:地址分配机制
- 并查集模板
- Python基础--人们一些最爱的标准库(random time)
- 屏幕适配问题1
- leetcode62.[DP] Unique Paths
- Mybatis junit测试时报: parameter *** not found.available 错误处理
- weblogic安装与配置