【问题标题】:What is usually way for updating entities in Hibernate/JPA?在 Hibernate/JPA 中更新实体的通常方法是什么?
【发布时间】:2013-12-03 00:44:35
【问题描述】:

在 Hibernate 中更新实体时,哪种方法更可取? (新值来自 UI)

1) 按 ID (Session#get()) 检索实体,使用新值更新其文件并调用 Session#update()

2) 使用 new 关键字创建新实体,用新值填充它,插入 ID(包括从 UI 接收到的所有值)并调用 Session#update()

【问题讨论】:

    标签: hibernate jpa orm jpa-2.0


    【解决方案1】:

    使用 session.get 或查询从数据库中获取实体,更改它,提交会话。

    Hibernate 实现了一种非常有用的自动刷新机制,它可以检测会话中的更改并将它们自动同步到数据库。

    【讨论】:

    • 好的,谢谢。但是,如果我还需要更新子实体列表(一对多)怎么办?我应该检索整个对象图吗?如果我的对象图真的很复杂(多个子列表)怎么办。
    • 好问题。这是hibernate覆盖的关键对象对象关系差距之一。可以从对象网络中获取所需的对象并更新回数据库(如果我没记错的话)。
    • 当您更改列表中的现有项目时,Hibernate 会识别更改。添加和删​​除项:如果将子项映射为复合元素,则您无需做任何特别的事情。如果孩子是实体,您可以使用 cascade=all 插入新项目并显式删除它们或使用 cascade=all-delete-orphans。当您添加或删除项目时,Hibernate 不需要加载整个列表...还有更具体的问题吗?
    猜你喜欢
    • 2012-01-08
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多