相关疑难解决方法(0)

Entitymanager.flush()VS EntityManager.getTransaction().commit - 我应该更喜欢什么?

更新数据库时我应该更喜欢什么?两种方法的优缺点是什么?何时使用其中一种方法?

public void disemployEmployee(Integer employeeId, Date endDate) {
    Employee employee = (Employee)em.find("Employee", employeeId);
    employee.getPeriod().setEndDate(endDate);
    em.flush();
}

public void disemployEmployee(Integer employeeId, Date endDate) {
    Employee employee = (Employee)em.find("Employee", employeeId);
    em.getTransaction().begin();
    employee.getPeriod().setEndDate(endDate);
    em.getTransaction().commit();
}
Run Code Online (Sandbox Code Playgroud)

java jpa eclipselink

44
推荐指数
3
解决办法
8万
查看次数

JPA中冲洗的确切目的是什么

一些令人困惑的解释:flush(); 刷新是将底层持久存储与内存中保持的持久状态同步的过程.它将在正在运行的事务中更新或插入到表中,但它可能不会提交这些更改.

如果只有在提交之后才会在数据库中保留更改,那么为什么要在代码中间进行刷新.

并且在运行刷新之后,如果对托管对象进行了任何更改,那么将抛出异常,或者这些将被同步,然后将变为永久.如果他们得到同步,那么为什么要在第一时间冲洗.

java jpa entitymanager

9
推荐指数
1
解决办法
1万
查看次数

在 Spring Boot 应用程序的 @Transactional 方法中调用 flush()

在@Transactional 方法中间调用Hibernate flush() 是否有可能将不完整的结果保存在数据库中?例如,这个函数是否有可能将“John”保存到数据库中?

@Transactional
public void tt() {
    Student s = new Student("John");
    em.persist(s);
    em.flush();
    // Perform some calculations that change some attributes of the instance
    s.setName("Jeff");
}
Run Code Online (Sandbox Code Playgroud)

我用 H2 内存数据库尝试过它,它没有保存不完整的事务更改。但是在某些条件下是否可能并且可能使用另一个数据库引擎?

java sql spring hibernate jpa

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×3

jpa ×3

eclipselink ×1

entitymanager ×1

hibernate ×1

spring ×1

sql ×1