在休眠中使用已弃用的保存方法的替代方法

发布于 2025-01-09 05:29:37 字数 824 浏览 0 评论 0原文

我正在使用以下代码将人员对象保存到数据库中:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Main {

    public static void main(String[] args) {
        Person person = new Person();
        person.setID(1);
        person.setName("name-1");
        person.setAddress("address-1");

        Configuration configuration = new Configuration().configure().addAnnotatedClass(Person.class);
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        session.save(person);
        transaction.commit();
    }
}

我发现 save 方法已被弃用。我们应该使用什么替代方法?

I am using the following code to save a person object into the database:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Main {

    public static void main(String[] args) {
        Person person = new Person();
        person.setID(1);
        person.setName("name-1");
        person.setAddress("address-1");

        Configuration configuration = new Configuration().configure().addAnnotatedClass(Person.class);
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        session.save(person);
        transaction.commit();
    }
}

I see that the save method is deprecated. What's the alternative approach that we are supposed to use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

脱离于你 2025-01-16 05:29:37

保存() 自 Hibernate 6.0 起已弃用。 javadoc 建议使用 persist() 代替。

已弃用。

使用 坚持(对象)

小字:save()persist() 类似,但仍然不同的。 save() 立即保存实体并返回生成的 ID。 persist() 只是标记要插入的实体。 ID,取决于标识符生成器,​​可以异步生成,例如当会话被刷新时。

save() is deprecated since Hibernate 6.0. The javadoc suggests to use persist() instead.

Deprecated.

use persist(Object)

Small print: save() and persist() are similar, but still different. save() immediately persist the entity and returns the generated ID. persist() just marks the entity for insertion. The ID, depending on the identifier generator, may be generated asynchronously, for example when the session is flushed.

绮烟 2025-01-16 05:29:37

save() 从来都不是 JPA 的一部分。由于 hibernate 出现在 JPA 之前,因此他们继续使用它,现在已弃用,并将在将来删除。
persist():持久方法用于保存新创建的实体
merge():应该用于更新分离的实体对象。
update():它强制实体 obj 从分离状态转换为持久状态。与 merge() 不同,它不会进行不必要的 SELECT 调用
注意:INSERT 语句仅在提交事务、刷新或关闭会话时才会发生。

save() was never part of JPA. Since hibernate came before JPA they continued with it and now deprecated and will be removed in the future.
persist(): Persist methods are used to save newly created entities
merge(): should be used to update detached entity object.
update(): It forces the transition of Entity obj from detached to persistent state. It doesn't make unnecessary SELECT calls unlike merge()
Note: INSERT statements will occur only upon committing the transaction, or flushing or closing the session.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文