java spring - JPA 구성에서 기본 스키마 이름을 설정하는 방법은 무엇입니까?





configuration project (5)


spring-boot, java 기반 설정을 사용하는 다른 사람들을 위해,

application.properties에 스키마 값을 설정했습니다.

spring.jpa.properties.hibernate.dialect=...
spring.jpa.properties.hibernate.default_schema=...

나는 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>

...하지만 Google에서 그 이름을 찾을 수 없습니다. 어떤 아이디어?




JPA Entity Java Classes의 스키마 하드 코딩을 피하기 위해 OracleApplicationServer10 (OC4J, Orion)에 배치 된 Java EE 애플리케이션에서 orm.xml 매핑 파일을 사용했습니다. 그것은 persistence.xml뿐만 아니라 model.jar / META-INF /에 있습니다. 태그가있는 peresistence.xml에서 orm.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 설정 유형을 찾고 스키마 이름을 외부 소스 (속성 파일)로 설정하기를 원하는 사람). 구성이 작동합니다.

<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을 처음 생성 할 때 자동으로 생성 및 업데이트 할 필요없이 가져 와서 저장하십시오.




JPA 속성에 대해서도 알지 못합니다. 그러나 당신은 Hibernate 프라퍼티를 추가 할 수있다 (당신이 Hibernate를 프로 바이더로 사용한다고 가정 할 때).

...

<property name="hibernate.default_schema" value="myschema"/>

...

최대 절전 모드가이를 선택해야합니다.




어떤 응용 프로그램 서버를 사용하고 있습니까? 중복되거나 충돌하는 최대 절전 모드 병입니다.





java hibernate spring configuration jpa