Hibernate使用中的一些经验

本文分享了Hibernate3官方文档中的一些最佳实践,重点介绍了属性配置项、维护数据库DDL等方面的注意事项,包括如何合理配置字段更新策略、设置长度及外键约束、生成索引及ID策略等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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的更新。请注意这点。特别是重命名的话基本无法删除原来的。

今天在重构一个项目代码的时候发现这些问题,希望有参考价值。
Hibernate使用技巧汇总<br><br>1.两种配置文件: <br> A.hibernate.cfg.xml 和 B.hibernate.properties <br> A中可含映射文件的配置,而B中hard codes加映射文件。 <br> A。Configuration config=new Configuration().config(); <br> B. Configuration config=new Configuration(); <br> config.addClass(TUser.class); <br><br>2.你不必一定用hibernate.cfg.xmlhibernate.properties这两文件名, <br> 你也不一定非得把配置文件放在Classes下, <br> File file=new File("c:\\sample\\myhibernate.xml"); <br> Configuration config=new Configuration().config(file); <br>3. session.Flush() <br> 强制数据库立即同步,当用事务时,不必用flush,事务提交自动调用flush <br> 在session关闭时也会调用flush <br><br>4. Hibernate总是使用对象类型作为字段类型 <br>5. XDoclet专门建立了hibernate doclet,就是在java代码上加上一些 <br> java docTag,后来再让XDoclet分析该java代码,生成映射文件; <br>6.HQL子句本身大小写无关,但是其中出现的类名和属性名必须注意大小写区分。 <br>7.关系: <br> Constrained : 约束,表明主控表的主键上是否存在一个外键(foreigh key) <br> 对其进行约束。 <br> property-ref:关联类中用于与主控类相关联的属性名,默认为关联类的主键属性名 <br> 单向一对多需在一方配置,双向一对多需在双方进行配置 <br>8.lazy=false:被动方的记录由hibernate负责记取,之后存放在主控方指定的 <br> Collection类型属性中 <br><br>...............<br><br><br>...............<br><br><br>27.Spring的参数化事务管理功能相当强大,笔者建议在基于Spring Framework的应用 <br>开发中,尽量使用容器管理事务,以获得数据逻辑代码的最佳可读性。 <br> <br>public class UserDAO extends HibernateDaoSupport implements IUserDAO <br>{ <br>public void insertUser(User user) { <br>getHibernateTemplate().saveOrUpdate(user); <br>} <br>} <br><br> 上面的UserDAO实现了自定义的IUserDAO接口,并扩展了抽象类: <br>HibernateDaoSupport <br>HibernateSupport实现了HibernateTemplate和SessionFactory实例的关联。 <br>HibernateTemplate对Hibernate Session操作进行了封装,而 <br>HibernateTemplate.execute方法则是一封装机制的核心 <br> *在spring的配置文件里,移植了整个hibernate.cfg.xml的内容。<br>
标题基于SpringBoot+Vue的社区便民服务平台研究AI更换标题第1章引言介绍社区便民服务平台的研究背景、意义,以及基于SpringBoot+Vue技术的研究现状和创新点。1.1研究背景与意义分析社区便民服务的重要性,以及SpringBoot+Vue技术在平台建设中的优势。1.2国内外研究现状概述国内外在社区便民服务平台方面的发展现状。1.3研究方法与创新点阐述本文采用的研究方法和在SpringBoot+Vue技术应用上的创新之处。第2章相关理论介绍SpringBoot和Vue的相关理论基础,以及它们在社区便民服务平台中的应用。2.1SpringBoot技术概述解释SpringBoot的基本概念、特点及其在便民服务平台中的应用价值。2.2Vue技术概述阐述Vue的核心思想、技术特性及其在前端界面开发中的优势。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue如何有效整合,以提升社区便民服务平台的性能。第3章平台需求分析与设计分析社区便民服务平台的需求,并基于SpringBoot+Vue技术进行平台设计。3.1需求分析明确平台需满足的功能需求和性能需求。3.2架构设计设计平台的整体架构,包括前后端分离、模块化设计等思想。3.3数据库设计根据平台需求设计合理的数据库结构,包括数据表、字段等。第4章平台实现与关键技术详细阐述基于SpringBoot+Vue的社区便民服务平台的实现过程及关键技术。4.1后端服务实现使用SpringBoot实现后端服务,包括用户管理、服务管理等核心功能。4.2前端界面实现采用Vue技术实现前端界面,提供友好的用户交互体验。4.3前后端交互技术探讨前后端数据交互的方式,如RESTful API、WebSocket等。第5章平台测试与优化对实现的社区便民服务平台进行全面测试,并针对问题进行优化。5.1测试环境与工具介绍测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值