Hibernate类映射选项

涉及<hibernate-mapping>和<class>元素的一些配置选项:

1.动态的SQL生成

默认的情况下,Hibernate启动时给每个持久化类创建SQL语句。这些语句是用来读取单个行、删除一行等的简单创建、读取、更新、删除。

<class>映射元素中有两个属性可以禁用启动时CRUD SQL的生成。

<class name="Item" dynamic-insert="true" dynamic-update="true">

……

</class>

其中dynamic-insert属性告诉hibernate是否在SQL INSERT中包括空的属性值,

dynamic-update属性告诉hibernate是否在SQL UPDATE中包括未被修改的属性。

2.使实体不可变

一个特定类的实例可以使不可变的。通过把mutable属性设置为false来映射一个不可变的类,就可以避免脏检查。

<hibernate-mapping default-access="field">

<class name="Bid" mutable="false">

……

</class>

</hibernate-mapping>

3.给查询命名实体

默认情况下,所有类名都自动地导入到Hibernate查询语言(HQL)的命名空间。换句话说,可以在HQL中共使用没有包前缀的短类名,这很方便。然而,如果给定的SessionFactory存在两个同名的类,这两个类可能在领域模型的不同包中,这个自动导入就可以关闭。

如果存在这种冲突,而又不改变默认的设置,Hibernate将不知道你正在HQL中引用哪个类。可以在<hibernate-mapping>根元素中设置autoimport="false",对特定的映射文件把名称的自动导入关闭到HQL命名空间。

实体名称也可以被显式地导入到HQL命名空间。甚至可以导入非显式映射的类和接口,因此短名称可以被用在多态的HQL查询中:

<hibernate-mapping>

<import class="auction.model.Auditabel" rename="IAuditable"/>

</hibernate-mapping>

现在可以用HQL查询(如from IAuditable)来获取实现auction.model.Auditable接口的类的所有持久化实例。注意import元素,就像<hibernate-mapping>所有其他直接的子元素一样,是一个适用于整个应用程序的声明,因此你不必并且不能再其他映射文件中重复它。

4.声明包名称


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值