在大多数休眠应用程序中,我看到显式的update语句来更新db中的任何休眠实体

    Session session1 = factory.openSession();
    Transaction  tx1 = session1.beginTransaction();
    College college= (College)session1.get(College.class, 1);
    college.setCollegeName("College_update");
    session1.saveOrUpdate(college); // at line 1
    tx1.commit();
    session1.close();


但是,即使我错过声明1,实体也在DB中更新。我的问题是提到显式更新语句是一种好习惯
什么时候甚至不需要?

最佳答案

否,不需要saveOrUpdate语句。 College实体已附加到您的Hibernate会话中,因为它是由Hibernate实例化的。刷新该会话时,对College实体的任何突变都将更新到数据库。

需要将现有(分离的)实体附加到休眠会话时,请使用saveOrUpdate。在该会话范围内对该实体进行的任何后续突变都将保留。

09-30 11:39