Hibernate作业四-----重写equals方法

重写equals方法

在hibernate中,如果是同一个session中根据查询得到的相同记录会拥有相同的java识别。

使用==比较两个对象的记录是否代表数据库中桐一个记录不可信必要时候比较内容是否相同需要重写equals()和hashCode()。


Object类的equals()方法的判断依据是引用地址,而String类的equals()方法则是在此基础上加了另一个IF判断,判断两个字符串里的字符是否对应相等。即如果两个字符串变量的引用地址不同,但是是同一个字符串的话,这两个字符串被视为相等。


因此通过重写equals()方法可以按照自己的意愿指定判定两个对象是否相等的依据。


实体类宗加入如下代码:

 public boolean equals(Object obj) {
	    	if(this==obj){
	    		return true;
	    	}
	    	if(!(obj instanceof User)){
	    		return false;
	    	}
	    	final User user = (User) obj;
	    	if( this.userId == user.userId &&
	    		this.userName.equals(user.userName) &&
	    		this.password.equals(user.password) &&
	    		this.gender == user.gender
	    	  ){
	    		return true;
	    	}
	    	return false;
	    	}
	    public int hashCode(){
	    	int result = 0;
	    	result = this.userName.hashCode() + this.password.hashCode();
	    	result = this.gender.hashCode() + result;
	    	return result;
	    }


package com.Entity.Util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import com.Entity.User.User;

public class TestSessionFactory {
	Configuration cfg = null;
	SessionFactory sf = null;
	
	Transaction ts = null;

	Session session = null;

	@Test
    public void select(){
	 try {

		 sf=SessionFactiryUtil.getSessionFactory();
		 session = sf.getCurrentSession();
		 ts = session.beginTransaction();
		//	User user=new User();
			 User user1=(User)session.get(User.class, 1);
			 User user2=(User)session.get(User.class, 3);
			 User user3=(User)session.get(User.class, 4);
			 User user4=(User)session.get(User.class, 1);
			 
				System.out.println(user1==user2);
				System.out.println(user1.equals(user2));
				System.out.println(user2==user3);
				System.out.println(user1.equals(user3));
				System.out.println(user1==user4);
				System.out.println(user1.equals(user4));

		    ts.commit();
		    session.close();

	} catch (HibernateException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
    }
}
package com.Entity.Util;

import org.hibernate.HibernateException;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class SessionFactiryUtil {
	private static Configuration cfg;
	private static SessionFactory sf;	
	static
	{
		try {
			cfg = new Configuration().configure();
			sf = cfg.buildSessionFactory();
		} catch (HibernateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static SessionFactory getSessionFactory() {
		// TODO Auto-generated method stub
		return sf;
	}	        
}



参考文章

https://blog.csdn.net/yuripe1995/article/details/49205637点击打开链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值