【问题标题】:Multiple JPA persistence units pointing to same database?多个 JPA 持久性单元指向同一个数据库?
【发布时间】:2011-04-22 16:17:21
【问题描述】:

我们可以有多个 JPA 持久单元指向同一个数据库,在不同的 Java 项目中并同时部署在服务器上吗?我的意思是同一时间,不是在同一秒部署,而是一起部署。我正在使用 hsqldb 数据库。

我的项目有一个客户端-服务器模型。我有一个统一的数据库表,服务器在其中填充数据,然后客户端在不同的项目中访问该数据。我可以通过服务器成功填充数据库。但是当我部署客户端项目时,数据库中的所有数据都会被删除。

我将<property name="hibernate.hbm2ddl.auto" value="update" /> 用于两个持久性单元。

【问题讨论】:

    标签: hibernate jpa hbm2ddl persistence-unit


    【解决方案1】:

    我们可以有多个 JPA 持久化单元指向同一个数据库,在不同的 Java 项目中并同时部署在服务器上吗?

    只要您在两个项目中都没有不兼容的映射,这应该可以工作。但是,您将无法使用二级缓存。

    但是当我部署客户端项目时,数据库中的所有数据都会被删除。 (...)

    hbm2ddl.auto 设置为update 时,这并不是我所期望的行为,但我不知道在“类集群”环境中使用时该行为是否定义良好(多个 JVM 执行更新)在同一时间)。

    在服务器部分完成初始化后部署客户端时会发生什么?

    我的建议:

    • 设置日志以查看确切发生了什么
    • 如果您共享相同的实体,请不要在客户端和服务器上update(尽管如果一个接一个地这样做应该不会有问题)。
    • 最终,don't use update at all on production database

    【讨论】:

    • 您的意思是只部署客户端并取消部署服务器?
    • @Vashishtha 不,我的意思是部署客户端和服务器,但只有在模式更新完成后。
    • @Pascal 我正在做同样的事情。但它不起作用:(
    • @Vashishtha 很抱歉,但“它不起作用”并没有说明问题。按照建议激活日志记录,解释你做了什么或改变了什么,当前的结果是什么。
    • @Pascal 抱歉含糊不清。我做了以下事情:1)启用日志记录2)部署服务器,然后部署客户端。在日志中,我在启动服务器时看到了插入语句。但是当我启动客户端时,服务器的持久化单元被取消部署,然后客户端的持久化单元被部署,清除了数据库中的所有数据。
    猜你喜欢
    • 2013-02-15
    • 2011-08-13
    • 2021-04-19
    • 2013-04-18
    • 2012-11-02
    • 2012-01-14
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多