Hibernate有一些方法,以这种或那种方式,获取对象并将其放入数据库.它们之间有什么区别,什么时候使用哪个,为什么不存在一个知道何时使用什么的智能方法?
到目前为止我发现的方法是:
save()update()saveOrUpdate()saveOrUpdateCopy()merge()persist()我正在努力理解hibernate方法之间的细微差别
saveOrUpdate - update - save/persist.
我知道网站上有一些类似的问题:
save和saveOrUpdate方法之间的区别是hibernate
但是看过它们之后,我没有注意到答案涵盖了在任何情况下使用这些方法产生的所有问题.我想提一下我创建的测试示例:我有一个带有记录的表USER:
id | company
1 Company1
2 Company2
Run Code Online (Sandbox Code Playgroud)
然后执行代码:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
User user1 = (User) session.load(User.class, Integer.valueOf(1));
user1.setCompany("Company3");
User user2 = (User) session.load(User.class, Integer.valueOf(2));
user2.setCompany("Company4");
session.persist(user1);
session.save(user2);
tx.commit();
Run Code Online (Sandbox Code Playgroud)
我在数据库中看到:
id | company
1 Company3
2 Company4
Run Code Online (Sandbox Code Playgroud)
我注意到save并且persist在这种情况下执行与saveOrUpdate或相同的任务.update因此,我的问题是什么是它们之间的差异以及何时saveOrUpdate或update必要.我说得对,与save或persist不更新相关的对象,即使使用Cascade?