- 实体类的设计原则:
1.实现一个默认的(无参数的)构造方法
2.提供一个标识属性(identitier property),即对应数据库中的标识字段 标识属性是可选的。可以不用管它,让Hibernate内部来追踪对象的识别。但是并这样做。
3.使用非final的类
代理(proxies)是Hibernate的一个重要的功能,它依赖的条件是,持久化类或者是非final的,或者是实现了一个所有方法都声明为public的接口。 你可以用Hibernate持久化一个没有实现任何接口的final类,但是你不能使用代理来延迟关联加载,这会限制你进行性能优化选择。 应该避免在非final类中声明public final的方法。如果要使用一个有public final方法的类,必须通过设置lazy="false" 来明确的禁用代理
很多其他ORM工具直接对实例变量进行持久化。在关系数据库schema和类的内部数据结构之间引入间接层会好一些,默认情况下Hibernate持久化JavaBeans风格的属性,认可getFoo,isFoo和setFoo这种形式的方法名。如果需要,可以对某些特定属性实行直接字段访问。 属性不需要声明为public的。Hibernate可以持久化一个有default,protected或private的get/set方法对属性进行持久化。
实例:
- public class User {
- //主键字段
- private int id;
- //属性字段
- private String username;
- private String password;
- private Date createTime;
- private Date expireTime;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- //getter 方法
- public String getUsername() {
- return username;
- }
- //setter 方法
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public Date getCreateTime() {
- return createTime;
- }
- public void setCreateTime(Date createTime) {
- this.createTime = createTime;
- }
- public Date getExpireTime() {
- return expireTime;
- }
- public void setExpireTime(Date expireTime) {
- this.expireTime = expireTime;
- }
- }