getCurrentSession打印出的hashCode不同
Configuration?config?=?new?Configuration().configure(); ServiceRegistry?serviceRegistry?=?new?ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); SessionFactory?sessionFactory?=?config.buildSessionFactory(serviceRegistry); Session?session1?=?sessionFactory.getCurrentSession(); Transaction?transaction?=?session1.beginTransaction(); Student?s?=?new?Student("張三",?"男",?new?Date(),?"北京"); session1.doWork(new?Work()?{ @Override public?void?execute(Connection?connection)?throws?SQLException?{ System.out.println("session1的hashcode:"+connection.hashCode()); } }); session1.save(s); transaction.commit(); Session?session2?=?sessionFactory.getCurrentSession(); transaction?=?session2.beginTransaction(); s?=?new?Student("李四",?"男",?new?Date(),?"上海"); session2.doWork(new?Work()?{ @Override public?void?execute(Connection?connection)?throws?SQLException?{ System.out.println("session2的hashcode:"+connection.hashCode()); } }); session2.save(s); transaction.commit();
按理說兩次打印的hashCode應該相同
但我打印出的不一樣
session1的hashcode:1574258553
session2的hashcode:1774088918
求大神幫看下,我代碼錯了么?
2016-03-18
我目前知道的是:因為你第一個session關閉了,所以內存已經結束了。下一個session是獲取不到的。所以hashcode會不一樣。但是我看了視頻的時候,發現老師也是這樣寫 居然一樣,我震驚了。
因為session是在commit();后自動關閉的,你可以試試 ?在commit前再弄個session,輸出的hashcode是一樣的。如果有新發現可以聯系我。愿意分享心得。
2021-04-20
但是放到前面,會提示session?is?closed,第二個沒有辦法執行了
2016-01-24
是的,執行Junit測試的時候要選定特定的方法名。
2015-12-12
我的也是相同的額。。。你的代碼看了下,似乎也是對的啊。。。而且用你的代碼測試過了。也是相同的。我懷疑是不是在執行test的時候,你選錯測試方法了?選了openSession那個。。
2015-10-18
我的也相同欸,不明覺厲