//User对象识别
public void testUserObjectsIndentify() {
Configuration cfg = null;
SessionFactory sf = null;
Session session = null;
Transaction ts = null;
User u1 = null,u2 = null;
try {
//使用单例模式创建Configuration对象和Session工厂
sf = HibernateUtil.getSessionFactory();
//保证每个读写线程有唯一的session实例
session = sf.getCurrentSession();
//创建事务
ts = session.beginTransaction();
u1 = session.get(User.class, 2);
//User u2 = session.get(User.class, 2);
//System.out.println(u1 == u2);//同一个session,引用相同
//提交事务
ts.commit();
} catch (Exception e) {
e.printStackTrace();
if(ts != null) {
ts.rollback();
}
}finally {
}
try {
//使用单例模式创建Configuration对象和Session工厂
sf = HibernateUtil.getSessionFactory();
//保证每个读写线程有唯一的session实例
session = sf.getCurrentSession();
//创建事务
ts = session.beginTransaction();
u2 = session.get(User.class, 2);
//提交事务
ts.commit();
} catch (Exception e) {
e.printStackTrace();
if(ts != null) {
ts.rollback();
}
}finally {
}
System.out.println(u1 == u2);
System.out.println(u1.equals(u2));
}
User.java
public boolean equals(Object obj) {
//引用相同
if(this == obj) return true;
//没有引用
if(obj == null) return false;
//实例不正确
if(!(obj instanceof User)) return false;
User other = (User)obj;
if(id != other.id) {
return false;
}
if(age != other.age) {
return false;
}
if(!name.equals(other.name)) {
return false;
}
if(gender !=null && other.gender != null)
{
if(!gender.equals(other.gender)) {
return false;
}
}
if(!birthday.equals(other.birthday)){
return false;
}
return true;
}
//通过hash值操作对象
public int hashCode() {
int result;
result = getName().hashCode();
result = 29 * result + getBirthday().hashCode();
result = 29 * result + getAge();
return result;
}