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應(yīng)該相同
但我打印出的不一樣
session1的hashcode:1574258553
session2的hashcode:1774088918
求大神幫看下,我代碼錯(cuò)了么?
2016-03-18
我目前知道的是:因?yàn)槟愕谝粋€(gè)session關(guān)閉了,所以內(nèi)存已經(jīng)結(jié)束了。下一個(gè)session是獲取不到的。所以hashcode會(huì)不一樣。但是我看了視頻的時(shí)候,發(fā)現(xiàn)老師也是這樣寫 居然一樣,我震驚了。
因?yàn)閟ession是在commit();后自動(dòng)關(guān)閉的,你可以試試 ?在commit前再弄個(gè)session,輸出的hashcode是一樣的。如果有新發(fā)現(xiàn)可以聯(lián)系我。愿意分享心得。
2021-04-20
但是放到前面,會(huì)提示session?is?closed,第二個(gè)沒有辦法執(zhí)行了
2016-01-24
是的,執(zhí)行Junit測試的時(shí)候要選定特定的方法名。
2015-12-12
我的也是相同的額。。。你的代碼看了下,似乎也是對(duì)的啊。。。而且用你的代碼測試過了。也是相同的。我懷疑是不是在執(zhí)行test的時(shí)候,你選錯(cuò)測試方法了?選了openSession那個(gè)。。
2015-10-18
我的也相同欸,不明覺厲