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

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

hibernate 多对多 最佳实践

首先 看我们的 ER 图 :涵盖了  一对一 ,一对多 ,多对多 的关系 多对多 在 hibernate 中的 实现 :  一个 用户user ,拥有 多个角色 role; 一个 ...
  • zoutongyuan
  • zoutongyuan
  • 2014年07月26日 23:31
  • 2030

《软件需求最佳实践》与《掌握需求过程》对比

最近公司要考察需求技能,抱着总结经验,提升技能的心态,看了两本关于需求的书籍,一本是被公司奉为需求人员教科书的《软件需求最佳实践》徐峰著,一本是《掌握需求过程第三版》James Robertson著。...
  • happymatilian
  • happymatilian
  • 2016年10月27日 16:40
  • 1646

20个数据库设计最佳实践

能够最佳的使用好数据库需要扎实的基础,下面文章详细的说明了20个数据库设计的最佳实践,很适合是实习的程序员学习。 使用明确、统一的标明和列名,例如 Sch...
  • www19940501a
  • www19940501a
  • 2013年07月01日 23:43
  • 971

用spring 集成mybatis的最佳实践

第一篇博文,欢迎各位大神拍砖
  • yeluochengshang
  • yeluochengshang
  • 2014年09月24日 01:46
  • 1399

Java异常处理手册和最佳实践

Java异常处理框架是非常强大并且很容易理解和使用,异常可能产生于不同的情况,例如:用户错误数据的输入,硬件故障,网络连接失败,数据服务器故障等等,下面我们需要学习在java中如何处理这些异常。在程序...
  • hp910315
  • hp910315
  • 2015年10月21日 15:26
  • 2680

Android开发最佳实践

 原文链接:https://github.com/futurice/android-best-practices 转载来源:http://blog.csdn.net/asce1885/arti...
  • myhui123
  • myhui123
  • 2015年02月10日 11:47
  • 6757

WEB前端开发最佳实践(1)

前端代码重构 删除无用代码,精简代码(不起作用的CSS样式和废弃的JavaScript函数) 前端代码规范化,把CSS代码放到独立的文件中,在JS定义局部变量,把部分全局变量改变成局部变量 整理基础类...
  • qq_17358905
  • qq_17358905
  • 2016年05月08日 10:17
  • 1375

业内docker技巧和最佳实践的想法

业内docker技巧和最佳实践的想法
  • yangzhenping
  • yangzhenping
  • 2015年01月20日 16:50
  • 3253

RESTful API 设计最佳实践(6)

RESTful API 设计最佳实践(6) 在本文中,将重点介绍一些实际设计RESTful API的建议,这些API是基于HTTP协议设计的。这些建议是参考网上一些好的资料并结合自己实际经验做了更加...
  • Linux2_SCDN
  • Linux2_SCDN
  • 2016年09月22日 10:03
  • 1009

版本控制之最佳实践(Git版)

现如今,应该每个开发者都在使用版本控制工具了吧。然而,如果你理解版本控制的基本规则,你便能更好地发挥它的效用。在此,我们汇总了一些最佳实践,希望你在使用Git做版本控制时能够了然于心。...
  • happydeer
  • happydeer
  • 2014年01月02日 08:38
  • 8151
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate最佳实践(一)
举报原因:
原因补充:

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