gpt4 book ai didi

java - Hibernate 的 Session.flush() 刷新了什么

转载 作者:行者123 更新时间:2023-11-29 04:56:16 24 4
gpt4 key购买 nike

当我在一个打开的 hibernate session 中调用 Session.flush() 时到底发生了什么?我通过保存/更新/删除更改(保留、删除、更新)的所有实体是否都写入了数据库,或者 session 中的所有实体是否都写入了数据库,如果我没有对它们调用更新等?

我发现很多 Hibernate 资源都在讨论这个问题,但没有一个能准确地给出我正在寻找的答案。

一个简单的例子:

class A {

@OneToOne
public B b;

public int x;
}

class B {

@OneToOne(mappedBy="b")
public B b;

public int y;
}


// Example
A a = aDao.load(...);
a.x = 20;
b.y = 15;
aDao.update(a);

// Question: Will this update b's value to 15 in the database?
session.flush();

如果上面的例子中B会被更新,我该如何防止呢?

感谢您的帮助!

最佳答案

所有更改 都写入数据库。不会保存您未创建/修改/删除的对象。

我不确定 obj.setName(obj.getName()) 之类的事情会发生什么(即当您触摸属性但不更改它时)。

关于java - Hibernate 的 Session.flush() 刷新了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6372955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com