对象状态及生命周期
- 瞬时状态transient:构造对象(session中没有,数据库中没有)
- 持久状态persistent:对象被session管理。(session中有,数据库中有)
持久状态下:当提交事务,清理缓存时发现session中数据和数据库中不一致时,将会把session中的数据更新到数据库中;在保存以后再修改对象,那么将会产生多条sql语句,会造成效率较低,所有建议在save前进行修改。
- 游离状态detached:session关闭后(session里面没有,数据库里面有)
//对于news对象来说其对应阶段状态 public void testSave(){ Session session = null; Transaction tx =null; News news =null; try{ session = HibernateUtils.getSession(); tx = session.beginTransaction(); //构造对象---瞬时状态 news = new News(); news.setNewsTitle("111"); news.setNewsContent("2222"); //持久状态,user被session管理,并且有id有值 session.save(news); news.setNewsTitle("8888"); tx.commit(); }catch(Exception e){ e.printStackTrace(); tx.rollback(); }finally{ HibernateUtils.close(session); } //游离状态 System.out.println(news.getNewsTitle()); }