Hibernate最佳实践(一)

翻译 2007年09月25日 10:49:00

编写细粒度的类并通过<component>标签做映射。
    使用Adress类涵盖street,suburb,state,postcode属性。这样有利于代码重用并能够简化重构。

在持久类中声明identifier属性。
    Hibernate中identifier属性是可选的,但是有很多理由要求我们使用他们。我们推荐使用“合成”主键(即使用自动生成,没有任何业务含义的字段)。

确定自然主键。
    为所有的实例确定自然主键,并将他们映射到<natural-id>标签。实现equals()和hashCode()方法时比较组成自然主键的属性。

将每个类的映射放在自己的文件里。
    不要使用单一的映射文件。com.eg.Foo类的映射放在com/eg/Foo.hbm.xml文件里。这样做在团队开发环境中尤其明智。

将映射文件作为资源加载。
    将映射文件与他们所映射的类部署在一起。

考虑外部查询字符。

    如果你调用了非ANSI标准的SQL函数时这是一个很好的实现。将外部查询字符放在映射文件里能够使你的应用更加方便。

使用约束变量。

    就像在JDBC中一样,用“?”代替非常量。不要在查询中使用字符串拼接来约束变量的值!如果想做的更好,可以考虑在查询中使用命名的参数。

不要管理自己JDBC连接。

    Hibernate由应用管理JDBC连接。这一做法应视为最后手段。如果你不能使用内置的连接,可以考虑自己实现org.hibernate.connection.ConnectionProvider类。

考虑使用自定义类型。

    假设你有一个Java类型,比如库中的类,它需要被持久化但是不能提供作为组件的映射访问。你可以考虑实现org.hibernate.UserType。这个方法可以让你在自己实现的代码和Hibernate类型中自由转换。

在瓶颈点手工编写JDBC代码。

    在系统性能的关键点,很多操作直接用JDBC可能更有效。但是请在你明确知道的瓶颈点使用JDBC,并且不要以为直接使用JDBC必然更快。如果你直接使用JDBC,那么打开一个Hibernate的Session连接用它的JDBC连接是值得的。这样,你仍可以应用相同的事务策略和底层连接供应商。

了解Session类的刷新。

    Session不定时的与数据库同步持久类的状态。如果这个过程发生的太频繁可能影响实现。你有时可能需要通过禁用自动刷新来减少不必要的刷新,甚至需要在特定交易中改变查询和其他操作的顺序。

在三层架构中考虑使用超类。 

举报

相关文章推荐

Hibernate4实战 之第七部分:最佳实践

Hibernate4实战 之第七部分:最佳实践 http://3001448.blog.51cto.com/2991448/1205812 设计细颗粒度的持久类并且使用...

Hibernate4实战 之第七部分:最佳实践

设计细颗粒度的持久类并且使用来实现映射。 例如使用一个Address持久类来封装 street, suburb, state, postcode. 这将有利于代码重用和简化代码重构(refact...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

hibernate 一对多 最佳实践

首先 看我们的 ER 图 :涵盖了  一对一 ,一对多 ,多对多 的关系

(IBM)Struts2、Spring、Hibernate 高效开发的最佳实践

引言 SSH(Struts2+Spring+Hibernate)是最为 Java 业界熟知的 Java EE Web 组件层的开发技术。很多人提起 Java EE,甚至都会将其误认为就是 SSH。无...

Hibernate二级缓存 ---- 最佳实践 (转)

出自:http://elf8848.iteye.com/blog/805351 作者:赵磊 博客:http://elf8848.iteye.com       2010年11月7号...

Hibernate4实战 之第七部分:最佳实践

设计细颗粒度的持久类并且使用来实现映射。 例如使用一个Address持久类来封装 street, suburb, state, postcode. 这将有利于代码重用和简化代码重构(refacto...

Hibernate_使用原生态sql&Dto传输&最佳实践_Demo

package org.com.test.model1; /** * DTO对象没有任何存储的意义,仅仅是用来进行数据的传输的。 * 特别注意:这样的对象,必须有全部字段的构造方法和不带参数的构造...

Hibernate二级缓存 ---- 最佳实践

作者:赵磊 博客:http://elf8848.iteye.com       2010年11月7号,立冬,星期天。北京外面风好大,躲在家里整理一下这篇文章,发出来与大家分享,对大家有帮助是我最...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)