兩種方式測試出來的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創(chuàng)建成功!"); ????????}?else?{ ????????????System.out.println("session創(chuàng)建失??!"); ????????}*/ ????} ???? ????@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創(chuàng)建成功!"); ????????}?else?{ ????????????System.out.println("session創(chuàng)建失??!"); ????????}*/ ????} }
下面是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>
2017-07-31
通過getCurrentSession獲得的是當前的對話,hash code是一樣的