两种方式测试出来的hashCode是一样的,什么原因,是新版本的差异问题吗?
import java.sql.Connection; import java.sql.SQLException; import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.jdbc.Work; import org.hibernate.service.ServiceRegistry; import org.junit.Test; public class SessionTest { @Test public void testOpenSession() { Configuration config = new Configuration().configure(); // 获得配置对象 // 获取服务注册对象 ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()) .configure().build(); // 获得sessionFactory对象 SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry); // 获得session对象 Session session1 = sessionFactory.openSession(); Session session2 = sessionFactory.openSession(); System.out.println(session1==session2); //false /* if (session != null) { System.out.println("session创建成功!"); } else { System.out.println("session创建失败!"); }*/ } @Test public void testSaveStudentsWithOpenSession() { Configuration config = new Configuration().configure(); // 获得配置对象 // 获取服务注册对象 ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()) .configure().build(); // 获得sessionFactory对象 SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry); // 获得session对象 Session session1 = sessionFactory.openSession(); //开启事务 Transaction transaction = session1.beginTransaction(); //生成一个学生对象 Students s = new Students(1, "张三", "男", new Date(), "北京"); session1.doWork(new Work() { @Override public void execute(Connection connection) throws SQLException { // TODO Auto-generated method stub System.out.println("connection hashCode:"+connection.hashCode()); } }); session1.save(s); //session1.close(); transaction.commit(); //提交事务 Session session2 = sessionFactory.openSession(); //开启事务 transaction = session2.beginTransaction(); //生成一个学生对象 s = new Students(2, "李四", "男", new Date(), "上海"); session2.doWork(new Work() { @Override public void execute(Connection connection) throws SQLException { // TODO Auto-generated method stub System.out.println("connection hashCode:"+connection.hashCode()); } }); session2.save(s); transaction.commit(); } @Test public void testSaveStudentsWithGetCurrentSession() { Configuration config = new Configuration().configure(); // 获得配置对象 // 获取服务注册对象 ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()) .configure().build(); // 获得sessionFactory对象 SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry); // 获得session对象 Session session1 = sessionFactory.getCurrentSession(); //开启事务 Transaction transaction = session1.beginTransaction(); //生成一个学生对象 Students s = new Students(1, "张三", "男", new Date(), "北京"); session1.doWork(new Work() { @Override public void execute(Connection connection) throws SQLException { // TODO Auto-generated method stub System.out.println("connection hashCode:"+connection.hashCode()); } }); session1.save(s); //session1.close(); transaction.commit(); //提交事务 Session session2 = sessionFactory.getCurrentSession(); //开启事务 transaction = session2.beginTransaction(); //生成一个学生对象 s = new Students(2, "李四", "男", new Date(), "上海"); session2.doWork(new Work() { @Override public void execute(Connection connection) throws SQLException { // TODO Auto-generated method stub System.out.println("connection hashCode:"+connection.hashCode()); } }); session2.save(s); transaction.commit(); } @Test public void testGetCurrentSession() { Configuration config = new Configuration().configure(); // 获得配置对象 // 获取服务注册对象 ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()) .configure().build(); // 获得sessionFactory对象 SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry); // 获得session对象 Session session1 = sessionFactory.getCurrentSession(); Session session2 = sessionFactory.getCurrentSession(); System.out.println(session1==session2); //true /* if (session != null) { System.out.println("session创建成功!"); } else { System.out.println("session创建失败!"); }*/ } }
下面是cfg.xml配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8</property> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hibernate.default_schema">hibernate</property> <property name="hbm2ddl.auto">create</property> <property name="hibernate.current_session_context_class">thread</property> <mapping resource="Students.hbm.xml"/> </session-factory> </hibernate-configuration>