2016-02-14 30 views
1

通過本教程提交後的hibernate對象是什麼狀態?

走出去「一旦會議結束,持久性對象設置爲分離對象」

我的問題是,如果你後的第一個承諾,但在會議結束之前開始另一個事務會發生什麼。此時用戶對象處於什麼狀態?

public static void main(String[] args) { 
    System.out.println("Maven + Hibernate + Oracle"); 
    Session session = HibernateUtil.getSessionFactory().openSession(); 
    session.beginTransaction(); 
    DBUser user = new DBUser(); //creating transient object 
    user.setUserId(104); 
    user.setUsername("user1"); 
    user.setCreatedBy("system"); 
    user.setCreatedDate(new Date()); 
    session.saveOrUpdate(user); //Updating the transient object to persistence object 
    session.getTransaction().commit(); 

    session.beginTransaction(); 
    user.setUsername("user2"); //what state is user object in right now? 
    session.saveOrUpdate(user); 
    session.getTransaction().commit(); 
    session.close(); 
} 
+0

如果你仍然在同一個'Session'那麼對象仍然應該連接。 –

+0

抱歉我不熟悉「附件」。與瞬態相同嗎?它仍然會附加在 – rtd353

+0

之上 – achabahe

回答

0

一旦實體已被附接到相關聯的休眠會話,它將直到該實例從休眠會話高速緩存逐出或關閉會話仍然被管理對象。

也就是說,如果您在關閉會話或清除會話的管理對象之前創建附加事務,實體將繼續由會話管理和跟蹤。這意味着您可以繼續在後續事務中使用事務1中已保存的實體,因爲只要後續事務使用相同的Hibernate會話,它仍處於管理狀態。

1

該實體處於managed狀態。

chart