【问题标题】:Spring and JPA with Hibernate, different object identitiesSpring 和 JPA 与 Hibernate,不同的对象身份
【发布时间】:2013-10-25 14:26:34
【问题描述】:

我有一个标准的 spring/jpa/hibernate 设置。一个带有 @Transactional 的服务方法,它使用两个不同的 DAO,每个 DAO 都注入了​​自己的 EntityManager 实例。

在查询时,最终是相同的实体(直接和间接检索),它们被表示为不同的对象,即使对于相同的休眠会话(事务)它们应该是相同的对象。

那么我的 DAO 是使用不同的休眠会话还是...?

【问题讨论】:

    标签: spring hibernate jpa transactions


    【解决方案1】:

    即使休眠会话相同,对象标识也可以不同。如果您使用 entityManager.find 方法按标识符读取,则返回的对象在同一会话中始终相同(第一级缓存)。但是,使用 JPQL 或条件查询可能会得到不同的实例(具有相同的数据)。

    【讨论】:

    • 您能提供文档参考吗?我只能发现,只要从同一个休眠会话中检索到同一个数据库实体,就可以保证同一个对象标识具有相同的对象身份。
    • 我只能找到这个帖子:apmblog.compuware.com/2009/02/16/…
    猜你喜欢
    • 2017-05-10
    • 1970-01-01
    • 2019-07-10
    • 2012-01-24
    • 2020-08-28
    • 1970-01-01
    • 2020-01-06
    • 2013-01-22
    • 2016-08-28
    相关资源
    最近更新 更多