Hibernate持久化类

持久化类:

遵循四条主要的规则:

1、实现一个默认(即无参数的)构造方法(constructor)
构造方法可以不是public的,hibernate可以使用ConStructor.newInstance()来实例化它们。强烈建议,在Hibernate中,为了运行期代理的生成,构造方法至少是包内可见的。

2、提供一个标识属性(可选)
映射到数据库表的主键字段。这个属性类型可以是任何的原始类型、原始类型的包装类型、String或是Date。

3、使用非final的类(可选)
代理(proxies)是Hibernate对一个重要的功能,它依赖的条件是,持久类或者是非final的或者是实现了一个所有方法都声明为public的接口。
可以用Hibernate持久化一个没有实现任何接口的final类,但是你不能使用代理来延迟关联加载,这会限制你进行性能优化选择。
也应该避免在非final类中声明public final的方法。如果你想使用一个有public final方法的类,你必须通过设置laze="false"来明确地禁用代理。

4、为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选)
属性不需要声明为public的。Hibernate可以持久化一个有default、protected或private的get/set方法对的属性进行持久化。


实现继承:

子类也必须遵守第一条和第二条规则。它从超类集成了标识属性。

 

实现equals()和hashCode():
如果有如下要求,必须重载equals()和hashCode()方法:
·想把持久类的实例方法Set中
·想重用托管实例

Hibernate保证,仅在特定会话范围内,持久化标识和java标识是等价的。因此,一旦我们混合了从不同会话中获取的实例,如果希望Set有明确的语义,就必须实现equals()和hashCode()。

 

 

 

你可能感兴趣的:(Hibernate)