Hibernate使用中的一些经验

在Hibernate3官方文档中有关于Hibernate的最佳实践,并且对二级缓冲等也作了介绍,这些很多朋友可能已经知道或者关注,我这里分享的主要是一些官方文档或者网上相对讨论比较少的经验。
1、对属性配置项中的update和insert的需要注意,该两项都默认是true,也就是在持久对象时的insert和update sql会包含所有的字段,如果我们开启Hibernate sql日志,就会明显看到这个问题。其实我们往往在update的时候只更新部分数据,有些数据根本不会发生在update阶段。例如createDate之类的内容。所以在配置持久对象的时候我们更多要关注那些字段update需要设置成false。其实比较了解ORM的朋友这是基本注意问题。
<property name="crateTime" type="timestamp" column="create_time" update="false"/>

2、通常希望用Hibernate mapping file来维护数据库ddl的朋友,常常忽略的内容:
2.1 length 如果是varchar类型,最好设置length。
2.2 foreign-key 如果在具有外键引用的地方不设置该项,Hibernate tools将会自动生成一个很不便于维护的constraint名称。主要在<many-to-one>中体现。
2.3 可以通过指定index来对一个或多个属性索引。
2.4 ID生成策略上我们常常遇到无法跨数据库的问题,我这里有个特殊写法能帮助解决如下问题:

<id name="id" column="id" type="long">
<generator class="native">
<param name="sequence">LMS_S_XX_ID</param>
</generator>
</id>

2.5 hibernate schema update无法实现对索引和Constraint的更新。请注意这点。特别是重命名的话基本无法删除原来的。

今天在重构一个项目代码的时候发现这些问题,希望有参考价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值