【问题标题】:JPA Annotated Entities that Reference JDBC Persisted, non-JPA Entities引用 JDBC 持久化的非 JPA 实体的 JPA 注释实体
【发布时间】:2014-03-21 19:01:56
【问题描述】:

我有一个新项目将使用 JPA,并可能使用 Hibernate 或 spring-data 作为提供者。但是,这个新项目中的一些持久化实体将通过 vanilla JDBC 引用由其他项目管理的持久化实体。目前无法更新这些较旧的项目以使用 JPA。处理这个问题的正确方法是什么?我可以不直接引用非 JPA 实体吗?

【问题讨论】:

    标签: java jpa jdbc


    【解决方案1】:

    理论上,您可以通过为它们创建 JPA 实体并利用 JPA 根据需要(从您的应用程序)持久化它们来直接在应用程序中管理它们,而旧的 JDBC 应用程序以相同的方式愉快地管理对象,但没有好处JPA 的。

    但是 - 需要注意的是,如果有任何缓存并且实体在您的应用程序容器之外被修改 - 您最终将处于危险的境地。

    我建议关闭本地缓存 - 因为每当 JDBC 应用程序写入数据库时​​,您最终都会得到陈旧的数据。

    【讨论】:

    • 这也是我的想法,我只是想避免为本质上相同的实体管理两个模型。不过,感谢您提供有关缓存的提示!
    • 没有办法不管理两者 - 因为它们的代码可能会略有不同(JPA 支持的数据结构与 JDBC 不同)
    • 单个 JPA 应用程序已经同时写入同一个表。如果另一个应用程序也写入同一个数据库,它不应该更改任何有关锁定的内容。最后,一切都归结为并发数据库事务。
    • 感谢 JB - 我在考虑同一应用程序中的并发事务。以上已更正。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多