为hibernate新建一个实体对象基类
来源:互联网 发布:监控服务器软件 编辑:程序博客网 时间:2024/03/29 16:54
代码如下:
public class BaseModel implements Serializabled{
private static final long serialVersionUID = 78745678432415476434L;
private String id;
public String getId(){return id;}
public void setId(String id){this.id = id;}
public boolean equals(Object obj){
//记得这个重载的函数的参数是Object,因为父类中的equals的参数是Object
if (this == obj)return true;//其实如果这里不执行这段代码,后面也可以判断,这样写可以提高效率
if (!(obj instanceof BaseModel))return false;//这里判断是为了,下面类型转换时不会抛出异常
BaseModel target = (BaseModel)obj;
//这里的ID通常来说是作为一个主键,我们可以在映射文件中设置类型时为:<generator class ="uuid.hex">即自动加一
if (null != this.getID() && this.getId().length() > 0)return this.getID().equals(target.getID);
//如果上面的返回没执行,则说明id没有得到值,这时如果target得到了,因为NULL与任何数据都不相等
if (null != target.getId()&&target.getId.length()>0)return false;
//现在看来,如果两者都为空,就调用以下这个辅助方法了
return EqualsBuilder.reflectionEquals(this, obj);
//EqualsBuilder是org.apache.commons.lang中辅助设计Object.equals()的一个类;它可以自调用appendSuper()或append()方法一级一级扩展,相当于多个equals的与操作。
}
//对EQLUALS重写以后,也要重写hashCode,因为equals有一个规则,那就是如果equals()相等的两个对象引用,他们的hashCode要相同
public int hashCode(){
if (null != this.getId() && this.getId().length()>0)return this.getID().hashCode();
return HashCodeBuilder.reflectionHshCode(this);
}
public String toString(){return ReflectionToStirngBuilder.toString(this);}
}
注意,前面的id,如果当前对象的引用只是new之后,他的ID是没有值的,所以在这里用的是:
getId().length()>0,也就是说如果连主键都没有,也就无所谓这两个对象是不是相等了。
Hibernate并不要求持久化类必须实现java.io.Serializable接口,但是对于采用分布式结构的Java应用,当Java对象在不 同的进程节点之间传输时,这个对象所属的类必须实现Serializable接口,此外,在Java Web应用中,如果希望对HttpSession中存放的Java对象进行持久化,那么这个Java对象所属的类也必须实现Serializable接 口。
public class BaseModel implements Serializabled{
private static final long serialVersionUID = 78745678432415476434L;
private String id;
public String getId(){return id;}
public void setId(String id){this.id = id;}
public boolean equals(Object obj){
//记得这个重载的函数的参数是Object,因为父类中的equals的参数是Object
if (this == obj)return true;//其实如果这里不执行这段代码,后面也可以判断,这样写可以提高效率
if (!(obj instanceof BaseModel))return false;//这里判断是为了,下面类型转换时不会抛出异常
BaseModel target = (BaseModel)obj;
//这里的ID通常来说是作为一个主键,我们可以在映射文件中设置类型时为:<generator class ="uuid.hex">即自动加一
if (null != this.getID() && this.getId().length() > 0)return this.getID().equals(target.getID);
//如果上面的返回没执行,则说明id没有得到值,这时如果target得到了,因为NULL与任何数据都不相等
if (null != target.getId()&&target.getId.length()>0)return false;
//现在看来,如果两者都为空,就调用以下这个辅助方法了
return EqualsBuilder.reflectionEquals(this, obj);
//EqualsBuilder是org.apache.commons.lang中辅助设计Object.equals()的一个类;它可以自调用appendSuper()或append()方法一级一级扩展,相当于多个equals的与操作。
}
//对EQLUALS重写以后,也要重写hashCode,因为equals有一个规则,那就是如果equals()相等的两个对象引用,他们的hashCode要相同
public int hashCode(){
if (null != this.getId() && this.getId().length()>0)return this.getID().hashCode();
return HashCodeBuilder.reflectionHshCode(this);
}
public String toString(){return ReflectionToStirngBuilder.toString(this);}
}
注意,前面的id,如果当前对象的引用只是new之后,他的ID是没有值的,所以在这里用的是:
getId().length()>0,也就是说如果连主键都没有,也就无所谓这两个对象是不是相等了。
Hibernate并不要求持久化类必须实现java.io.Serializable接口,但是对于采用分布式结构的Java应用,当Java对象在不 同的进程节点之间传输时,这个对象所属的类必须实现Serializable接口,此外,在Java Web应用中,如果希望对HttpSession中存放的Java对象进行持久化,那么这个Java对象所属的类也必须实现Serializable接 口。
- 为hibernate新建一个实体对象基类
- 一个公共的实体对象基类
- hibernate sql查询转化为实体类
- hibernate中实体类对象状态
- HIbernate 操纵实体对象
- Hibernate查询实体对象
- hibernate实体对象生命周期
- hibernate一个实体类映射多张表
- sql 多表数据封装为一个实体对象
- 判断一个实体对象是否真的为空
- 将DataRow 返回为一个实体类。
- Hibernate 实体对象的识别
- Hibernate-1.实体对象生命周期
- Hibernate实体对象的生命周期
- hibernate 实体对象的生命周期
- hibernate的实体对象生命周期
- Hibernate实体对象的生命周期
- Hibernate实体对象四大状态
- 流媒体技术纵览
- 8月9号,值得纪念
- 流媒体技术原理与应用
- 如何给GridView添加复选框
- 线程间的资源互斥共享
- 为hibernate新建一个实体对象基类
- 我能用Windows PowerShell做什么:检索一个特定项目
- 关于ike的学习
- 取得另一进程的参数
- .net快捷鍵
- 误删除UNDO表空间如何启动数据库
- 我刚创建了一个开源项目OXmlEd,欢迎大家拍砖
- Lucene.net搜索及高亮分页
- 程序的运行环境及其设计