xiele
2015-09-07 11:22
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
求大神帮看下,我代码错了么?
我目前知道的是:因为你第一个session关闭了,所以内存已经结束了。下一个session是获取不到的。所以hashcode会不一样。但是我看了视频的时候,发现老师也是这样写 居然一样,我震惊了。
因为session是在commit();后自动关闭的,你可以试试 在commit前再弄个session,输出的hashcode是一样的。如果有新发现可以联系我。愿意分享心得。
但是放到前面,会提示session is closed,第二个没有办法执行了
是的,执行Junit测试的时候要选定特定的方法名。
我的也是相同的额。。。你的代码看了下,似乎也是对的啊。。。而且用你的代码测试过了。也是相同的。我怀疑是不是在执行test的时候,你选错测试方法了?选了openSession那个。。
我的也相同欸,不明觉厉
Hibernate初探之单表映射
74798 学习 · 835 问题
相似问题