Hibernate configファイルでパラメーターhibernate.default_schema
:
<hibernate-configuration>
<session-factory>
...
<property name="hibernate.default_schema">myschema</property>
...
</session-factory>
</hibernate-configuration>
今、私はJPAを使用していますが、同じことをしたいと思っています。それ以外の場合、各_Tableアノテーションにパラメーターschema
を追加する必要があります。
@Entity
@Table (name = "projectcategory", schema = "SCHEMANAME")
public class Category implements Serializable { ... }
私が理解しているように、このパラメーターは構成のこの部分のどこかにあるはずです。
<bean id="domainEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="JiraManager"/>
<property name="dataSource" ref="domainDataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false"/>
<property name="showSql" value="false"/>
<property name="databasePlatform" value="${hibernate.dialect}"/>
</bean>
</property>
</bean>
<bean id="domainDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driver}" />
<property name="jdbcUrl" value="${datasource.url}" />
<property name="user" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="initialPoolSize" value="5"/>
<property name="minPoolSize" value="5"/>
<property name="maxPoolSize" value="15"/>
<property name="checkoutTimeout" value="10000"/>
<property name="maxStatements" value="150"/>
<property name="testConnectionOnCheckin" value="true"/>
<property name="idleConnectionTestPeriod" value="50"/>
</bean>
...しかし、私はグーグルでその名前を見つけることができません。何か案は?
このためのJPAプロパティについても知りません。ただし、Hibernateプロパティを追加できます(プロバイダーとしてHibernateを使用する場合)。
...
<property name="hibernate.default_schema" value="myschema"/>
...
Hibernateはそれを拾うべきです
投稿にアクセスする人(私のように、Spring構成タイプを探していて、スキーマ名を外部ソース(プロパティファイル)で設定したい人)の時間を節約するためです。設定はあなたのために動作します
<bean id="domainEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="JiraManager"/>
<property name="dataSource" ref="domainDataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false"/>
<property name="showSql" value="false"/>
<property name="databasePlatform" value="${hibernate.dialect}"/>
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">none</prop>
<prop key="hibernate.default_schema">${yourSchema}</prop>
</props>
</property>
</bean>
追伸:hibernate.hdm2ddl.autoについては、ポストで見ることができます Hibernate hbm2ddl.autoの可能な値とその動作は何ですか? create-updateを設定するのに便利だからです。ただし、実稼働環境では、ddlを制御する方が良いと思うので、ddlが自動的に作成および更新するのではなく、ddlが最初に生成したものをすべて保存して保存します。
JPAエンティティのスキーマのハードコーディングを回避するために、Javaクラスは、Java OracleApplicationServer10(OC4J、Orion)にデプロイされたEEアプリケーションでorm.xmlマッピングファイルを使用しました。 model.jar/META-INF /およびpersistence.xmlにありますマッピングファイルorm.xmlは、peresistence.xmlからタグで参照されます
...
<persistence-unit name="MySchemaPU" transaction-type="JTA">
<provider>
<mapping-file>META-INF/orm.xml</mapping-file>
...
ファイルorm.xmlのコンテンツを以下に引用します。
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://Java.Sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/persistence/orm http://Java.Sun.com/xml/ns/persistence/orm_1_0.xsd"
version="1.0">
<persistence-unit-metadata>
<persistence-unit-defaults>
<schema>myschema</schema>
</persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
Spring-bootを使用する他のユーザーの場合、Javaベースの設定、
Application.propertiesでスキーマ値を設定します
spring.jpa.properties.hibernate.dialect=...
spring.jpa.properties.hibernate.default_schema=...
スプリングブートの最新バージョンを使用している場合は、これが役立ちます。
.properties:
spring.jpa.properties.hibernate.default_schema=<name of your schema>
.yml:
spring:
jpa:
properties:
hibernate:
default_schema: <name of your schema>