oop中一对多关系可以用一下例子来描述
在数据库中这样关系通常是通过 把ordersheet 的id 作为Item 表一个column 一外键的形式来与OrderSheet 关联,所以从oop的涉及转化到数据库中的表就必然要在app的实现代码中涉及sql语句来处理 外键,这样会导致sql的硬编码,而使用 hibernate 在ordersheet 的配置文件用过 元素Set 就能轻松实现,并能实现级联 删除更新
ordersheet.hbm.xml
<hibernate-mapping>
<class name = "hiorder.OrderSheet" table = "ordersheet">
<id name = "orderId" type = "string" unsaved-value = "null">
<column name = "orderidinid" sql-type = "varchar(30)" not-null = "true"></column>
<generator class = "assigned"></generator>
</id>
<set name = "items" table = "item" cascade = "delete">
<key column = "orderid"></key>
<one-to-many class = "hiorder.Item"></one-to-many>
</set>
</class>
</hibernate-mapping>
在set中key 的属性column 指的是hibernate 为你实现的item表中的 外键字段
class 元素中的 id 下的column 的name 属性指的是 ordersheet表的 主键字段
item.hbm.xml
<hibernate-mapping>
<class name = "hiorder.Item" table = "item">
<id name = "itemId" type = "string" unsaved-value = "null">
<column name = "itemid" sql-type = "varchar(30)" not-null = "true"/>
<generator class = "assigned"/>
</id>
</class>
</hibernate-mapping>
有了这样的配置文件后 在使用时只要:
Item item1 = new Item();
item1.setItemId("item1");
Item item2 = new Item();
item2.setItemId("item2");
OrderSheet order = new OrderSheet();
order.setOrderId("order");
order.getItems().add(item1);
order.getItems().add(item2);
hibernate 就能自动做好 外键关联并把对应的数据放进去了