问这个问题可能有些...,但是看到网上说的都不一致,所以在这边发个帖子,确定一下。疑问点是在自由状态转换为持久状态的过程中,
在网上查了下,
有的说执行save或saveOrUpdate方法后,变为持久状态。
但是有的观点说持久状态是需要在session里面有,而且数据库里面也要有。
这样的话就有些矛盾了,如果在save以后,不commit的话,数据库中肯定是不会有数据的。怎么会算做是持久状态呢?举个笔试题的例子:(9)对于以下程序,Customer对象在第几行变为持久化状态?(单选)Customer customer=new Customer(); //line1customer.setName(\"Tom\"); //line2Session session1=sessionFactory.openSession(); //line3Transaction tx1 = session1.beginTransaction(); //line4session1.save(customer); //line4tx1.commit(); //line5session1.close(); //line6A) line1 B)line2 C)line3 D)line4 E)line5 F)line6答案却是D,请各位给个正确的答案。谢谢
在网上查了下,
有的说执行save或saveOrUpdate方法后,变为持久状态。
但是有的观点说持久状态是需要在session里面有,而且数据库里面也要有。
这样的话就有些矛盾了,如果在save以后,不commit的话,数据库中肯定是不会有数据的。怎么会算做是持久状态呢?举个笔试题的例子:(9)对于以下程序,Customer对象在第几行变为持久化状态?(单选)Customer customer=new Customer(); //line1customer.setName(\"Tom\"); //line2Session session1=sessionFactory.openSession(); //line3Transaction tx1 = session1.beginTransaction(); //line4session1.save(customer); //line4tx1.commit(); //line5session1.close(); //line6A) line1 B)line2 C)line3 D)line4 E)line5 F)line6答案却是D,请各位给个正确的答案。谢谢
{
session = HibernateUtils.getSession();
tx = session.beginTransaction();
// 临时状态
user = new User();
user.setName("李智雅");
user.setPassword("987654");
user.setBirthDate(new Date());
// 持久化状态
session.save(user);
user.setName("王新兰");
tx.commit();
}
catch (Exception e)
{
e.printStackTrace();
tx.rollback();
}
finally
{
HibernateUtils.closeSession(session);
}
// 游离状态
user.setPassword("123456");
try
{
session = HibernateUtils.getSession();
tx = session.beginTransaction();
// 持久化状态
session.update(user);// 必须显式调用update()
user.setName("励志哥");
tx.commit();
}
catch (Exception e)
{
e.printStackTrace();
tx.rollback();
}
finally
{
HibernateUtils.closeSession(session);
}
}
HibernateUtils.closeSession(session);之后就是游离状态
调用save或update之后就是持久化状态
这个时候还没有commit啊,难道是autocommit的缘故。