首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenJPA架构配置

OpenJPA架构配置
EN

Stack Overflow用户
提问于 2011-01-15 04:52:58
回答 4查看 5.4K关注 0票数 3

我在WebSphere和DB2上使用OpenJPA 1.2.3。有没有办法构建和捆绑我的应用程序,允许相同的应用程序(EAR)具有基于环境(DEV、ACPT、PROD等)的不断变化的Schema名称。

我的PU设置为容器管理,如下所示:

代码语言:javascript
复制
<persistence>
    <persistence-unit name="My_PU" transaction-type="JTA">
            <jta-data-source>jdbc/DataSource</jta-data-source>
            ...
            <properties>
                    <property name="openjpa.jdbc.Schema" value="MYSCHEMA"/>
                    <property name="openjpa.TransactionMode" value="managed"/>
                    <property name="openjpa.ConnectionFactoryMode" value="managed"/>
            </properties>
    </persistence-unit>
</persistence>

我已经研究过将其放入ORM.xml中,但这仍然是模式的静态值,并且没有外部化该设置;而且,它似乎不起作用(我看到许多线程都在讨论这个问题)。我还研究过将此配置放入WebSphere数据源;这似乎也行不通。

--基思

EN

回答 4

Stack Overflow用户

发布于 2011-01-15 05:09:29

我不熟悉OpenJPA,但我猜openjpa.jdbc.Schema属性是可选的。数据源(即jdbc/DataSource上的数据源)将指定所使用的默认模式。

你有没有试过把房子留在外面?

票数 3
EN

Stack Overflow用户

发布于 2014-02-18 00:33:03

你可以使用maven。

1-在项目pom文件或maven设置中为每个构建方案定义配置文件。

代码语言:javascript
复制
    <profiles>
        <profile>
            <id>DEV Profile</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <propertis>
                <db-schema>DEVSCHEMA</db-schema>
            </propertis>
        </profile>

        <profile>
            <id>PROD Profile</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <propertis>
                <db-schema>PRODSCHEMA</db-schema>
            </propertis>
        </profile>
    </profiles>

2-按如下方式更改您的persistence.xml:

代码语言:javascript
复制
    <persistence>
        <persistence-unit name="persistent-unit" transaction-type="JTA">
                <jta-data-source>jdbc/DataSource</jta-data-source>
                ...
                <properties>
                        <property name="openjpa.jdbc.Schema" value="${db-schema}"/>
                        <property name="openjpa.TransactionMode" value="managed"/>
                        <property name="openjpa.ConnectionFactoryMode" value="managed"/>
                </properties>
        </persistence-unit>
    </persistence>

3-在项目pom文件中放入以下行。

代码语言:javascript
复制
    <build>        
        <resources>
            <resource>
                <directory>src/main/resources/META-INF</directory>
                <filtering>true</filtering>
                <targetPath>/META-INF</targetPath>
            </resource>
        </resources>
    </build>
票数 2
EN

Stack Overflow用户

发布于 2012-09-05 03:06:05

我只需创建单独的<persistence-unit>元素,然后动态选择要绑定的元素。

例如:

代码语言:javascript
复制
<persistence>
    <persistence-unit name="DEV_PU" transaction-type="JTA">
            <jta-data-source>jdbc/DataSource</jta-data-source>
            ...
            <properties>
                    <property name="openjpa.jdbc.Schema" value="DEVSCHEMA"/>
                    <property name="openjpa.TransactionMode" value="managed"/>
                    <property name="openjpa.ConnectionFactoryMode" value="managed"/>
            </properties>
    </persistence-unit>
    <persistence-unit name="PROD_PU" transaction-type="JTA">
            <jta-data-source>jdbc/DataSource</jta-data-source>
            ...
            <properties>
                    <property name="openjpa.jdbc.Schema" value="PRODSCHEMA"/>
                    <property name="openjpa.TransactionMode" value="managed"/>
                    <property name="openjpa.ConnectionFactoryMode" value="managed"/>
            </properties>
    </persistence-unit>
</persistence>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4695827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档