hibernate的几种映射

1、映射id
<class name="ptable.Ttable" table="ttable" schema="dbo" catalog="company">
<id name="tid" type="java.lang.Integer">
<column name="tid" />
<generator class="identity" />
</id>
<property name="tname" type="java.lang.String">
<column name="tname" length="12" />
</property>
<property name="tdescript" type="java.lang.String">
<column name="tdescript" length="50" />
</property>
</class>
2、映射自然主键:
<class name="mypack.Customer" table "CUSTOMERS">
<id name="name" column"NAME" type="string">

<generator class="assigned"/>
</id>
<version name="version" column="VERSION" unsaved-value="0"/>
</class>
如果customer对象的version属性为-,就表示临时对象,否则为游离对象。
3、映射多对一单向
在order的pojo中应该有customer属性。
<class>
<many-to-one name="customer"

column="CUSTOMER_ID"

class=mypack.Customer"

cascade="save-update" 级联保存或更新

not-null="true"/> 表示order对应的customer不能为空
</class>
4、映射一对多双向关系
1)首先建立单向或双向关系是由具体业务来决定的,比如有如下业务时,根据客户查询所有定单,以及根据定单查询该客户,这时就要建立双向关系。
2)在order的pojo中应该有一个对应的customer对象做为属性。同时在customer的pojo中也应该有private set orders=new Hashset();来对应该用户的多个定单,为了程序的健壮性,应该new出该对象,以免该客户无定单,而又去访问他的定单时出现空引用的现象。
<class>
<set name="orders" cascade="save-update" inverse="true">

<key column="CUSTOMER_ID"/>

<one-to-many class="mypack.Order/>
</class>
1)在映射1对多双向关联时,应在“many”方设置inverse为true,来提高性能,这样某些重复sql语句就不会重复执行了。
2)在建立2个对象的双向关联时,应该同时修改关联两端的对象的相应属性:

customer.getOrders().add(order);

order.setCustomer(customer);

同时解除双向关联时,也应该修改两端对应的属性:

customer.getOrders().remove(order);

order.setCustomer(null);
3)级联删除,在cascade="delete"
4)cascade="all-delete-orphan"

级联删除、保存或更新,以及可以删除和customer不关联的order
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值