2010-10-08 104 views
5

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

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

我对两个持久性单元都使用<property name="hibernate.hbm2ddl.auto" value="update" />

回答

2

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

只要你没有在两个项目中不兼容的映射,这应该工作。尽管如此,您将无法使用二级缓存。

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

这不是真正的行为,我期望与hbm2ddl.auto设置为update,但如果在“簇状”环境中使用时的行为被明确定义(与一些我不知道JVM在同一时间执行更新)。

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

我的建议:

  • 安装程序日志记录,看看发生了什么正是
  • 如果您共享相同的实体,也许不update在客户端和服务器上(虽然这不应该”如果一个接一个地完成,那么问题就会成为问题)。
  • 最后,don't use update at all on production database
+0

您的意思是只部署客户端并取消部署服务器? – 2010-10-08 06:56:14

+0

@Vashishtha不,我的意思是部署客户端和服务器,但只有架构的更新完成。 – 2010-10-08 07:09:42

+0

@Pascal我正在做同样的事情。但它不工作:( – 2010-10-08 18:35:29