Hibernate学习第二章--Domain Object的限制

在开发Hibernate的时候,在设计数据库的时候最好有一个好的开发流程,下面介绍了三种开发流程:

(1)Domain Object——Mapping——DB(Hibernate官方推荐的一种流程,使用这种流程的有点就在于以面向对象的方式来对数据库进行设计的,这对于理解面向对象的思想会有一个更好的帮助)

(2)DB开始,使用工具生成Mapping和Domain Object(这种方式的开发流程使用的较多,主要原因是目前的数据库都是关系数据库,大部分程序员设计数据库的时候都喜欢先从DB开始)

(3)由Mapping开始(不推荐,这种开发流程通过映射文件来生成Domain Object和DB的方式)

Domain Object的限制条件:

(1)需要一个无参数的构造函数。Hibernate中是通过反射来对对象进行实例化的,这个无参数的构造函数是必须的。

(2)有setter和getter方法

(3)有无意义的表示符(主键id),这个是可选的。提供一个无意义的主键id,对于后期数据库的维护上就便捷的多了。

(4)使用非final的类。

因为Hibernate在运行时候生成代理是Hibernate的一个重要功能。如果持久化类没有实现任何接口的话,Hibernate使用CGLIB生成代理,该代理对象是持久化类子类的实例。如果使用了final类,则无法生成CGLIB代理,将无法进行性能优化。还有一个可选的策略,就是让Hibernate持久化类实现一个所有方法都声明为public的接口。

(5)重写equals()和hashCode()方法。如果要把持久化类的实例放入到Set中,则应该为该持久化类重写equals()和hashCode()方法。

<!--EndFragment-->

猜你喜欢

转载自unddone8373229.iteye.com/blog/1104510