java - hibernate中的同步是什么意思

标签 java hibernate orm

我在 session.flush() 上读到了这一点

的 调用 session.flush() 时数据将被同步(但不提交)

什么与什么同步.. 是否是通过查询或查询进入内存的数据库状态 内存状态将被复制到Db?

请澄清一下..

最佳答案

调用 session.flush() 将导致为您所做的所有更改生成 SQL 语句,并在 sessios 事务范围内对数据库执行这些 SQL 语句。

Car car = (Car) session.get(Car.class, 1);
car.setModel("Mustang");
session.flush();

最后一行将在数据库上引发一个UPDATE语句。但是,根据您在应用程序中处理事务的方式,在您提交该部分保存的事务之前,其他用户可能看不到此更改。

虽然刷新并不是真正的双向操作,但它可以用于确保将自动生成的标识符分配给新的实体对象。如果 Car 类映射到具有自动递增标识符的数据库表,您可以使用flush来确保该标识符在应用程序代码中的域对象上可用:

Car car = new Car();
car.setModel("Torino");
session.save(car);

System.out.println(car.getId());               // prints 0
session.flush();
System.out.println(car.getId());               // prints something larger than 0

假设您想发送一封包含新创建汽车链接的电子邮件(好吧,用户帐户会更有意义),但如果邮件无法发送,您希望回滚您的交易。刷新 session 允许您执行此操作。

关于java - hibernate中的同步是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2573941/

相关文章:

hibernate - 如何从Grails的数据库 View 创建域

python - django 字段名称不得以下划线结尾。字段名称不得包含 __

oracle - 默认情况下,使用Oracle数据库时,Hibernate会将 bool 数据类型映射到什么?

java - 具有并行线程的 TestNG Selenium

java - java.util.List 实现的测试用例库

java - 用于元数据驱动方法的良好 Java 库或框架?

hibernate - 结合使用Hibernate的自动模式创建和数据库版本控制

java - cassandra 中的批量加载器 : String as row keys in cassandra

hibernate - EhCache配置文件中的UpdateTimestampsCache需要什么?

php - Symfony ArrayCollection 与 PersistentCollection