我在学习 Hibernate 框架时从一本书中看到了这个例子。
public class BasicMovieManager()
{
private void persistMovie(Movie movie)
{
Session session=sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(movie);
session.getTransaction().commit();
}
}
我能理解必须将 Movie 对象映射并写入数据库。我也明白提交步骤将写入数据库。但是这里save()
的目的是什么?我提到的一些消息来源说 save()
持久化 数据。坚持不意味着写入永久存储吗?如果不是,那具体是什么意思?
最佳答案
我认为比较是错误的,你应该比较
Commit
与 Flush
和
保存
与 坚持
已编辑:
你应该知道this :
transient: never persistent, not associated with any Session.
persistent: associated with a unique Session.
detached: previously persistent, not associated with any Session.
Commit
会将数据保存到 DB,因此您不能再回滚,这与Flush
不同。Save
将在写入对象之前生成并返回标识符,稍后在Flush
或Commit
时将数据写入数据库。Persist
不会返回值,因为您只在缓存中将对象标记为脏,因此在刷新或提交时将保存它,这在事务中持久化多个对象时很有用.
关于java - 使用 hibernate 时数据库中的 save() 和 commit() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34311069/