gpt4 book ai didi

java - 在多个项目中使用同一个 Hibernate 管理的数据库会导致问题吗?

转载 作者:行者123 更新时间:2023-12-01 21:54:40 25 4
gpt4 key购买 nike

我将 Wildfly 与 Hibernate 结合使用,并且我将有两个不同的项目访问同一数据库。每个项目都有自己的 persistence.xml,但 persistence.xml 中的数据源是相同的。目前我有一个使用这些数据源的项目。看起来像这样:

项目A:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">

<persistence-unit name="MyProjectPersistenceUnit" transaction-type="JTA">
<jta-data-source>java:jboss/datasources/myprojectDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />
<property name="hibernate.connection.charSet" value="UTF-8" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
</properties>
</persistence-unit>

<persistence-unit name="MyProjectLoggingUnit" transaction-type="RESOURCE_LOCAL">
<non-jta-data-source>java:jboss/datasources/myprojectDS</non-jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />
<property name="hibernate.connection.charSet" value="UTF-8" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
</properties>
</persistence-unit>

</persistence>

附加项目的 persistence.xml 将如下所示:

项目B:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">

<persistence-unit name="MyProjectLoggingUnit" transaction-type="JTA">
<jta-data-source>java:jboss/datasources/myprojectDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />
<property name="hibernate.connection.charSet" value="UTF-8" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
</properties>
</persistence-unit>

</persistence>

第一个项目同时使用 JTA 和 RESOURCE_LOCAL 事务,因此我可以“手动”处理日志记录。第二个项目仅使用 JTA,因为我只在那里进行日志记录操作。项目 A 执行 CRUD 操作,项目 B 只执行创建操作。这两个项目都在同一个 Wildfly 服务器中运行。当我使用不同项目的相同数据源访问同一数据库时,项目 A 和项目 B 之间是否可能会出现任何问题,可能是数据库锁定、Wildfly 中的事务或其他问题?我不这么认为,但我担心会发生一些我还不知道的“副作用”。

最佳答案

应该不会有任何问题,因为数据源由jboss管理,它将根据您的配置分配连接,如果您使用同一行处理来自不同项目的数据,但让数据库来处理,则可能会发生锁定。

并且涉及不同的实体,不会产生任何问题,例如 TCP 连接是相同的/共享 session ,并且事务的操作不同,spring 和 hibernate 都成熟并且最好,除非您搞乱了配置;),你看起来不错。

关于java - 在多个项目中使用同一个 Hibernate 管理的数据库会导致问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34554738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com