Hibernate學習之三種狀態及生命周期(圖)
三種狀態:
生命周期:
代碼表示:
//三種狀態 public void testThreeState(){ TUser user=new TUser(); user.setName("spark"); //此時user處于Transient try { Transaction tx=session.beginTransaction(); session.save(user); //user對象已經由hibernate納入管理器,處于persistent狀態 tx.commit(); session.close(); //user對象此時為Detached狀態,因為與其關聯的session已經關閉 Transaction tx2=session2.beginTransaction(); session2.update(user);//user對象借助session2,由hibernate納入管理容器,恢復persistent狀態 update并沒有發送sql語句 user.setName("spark_1");//處于persistent狀態,其屬性變更將自動由hibernate固話到數據庫中 ?。。。? tx2.commit(); //commit之前調用session.flush()在其中發送sql語句 } catch (HibernateException e) { e.printStackTrace(); } }