2017-12-20 8 views
1

와 최대 절전 매핑 파일에 동적 스키마 이름을 추가합니다. LocalSessionFactoryBean을 세션 팩토리 객체로 사용하고 다른 hbm.xml 파일을 내 프로젝트에 매핑했습니다.내가 봄 + 내 프로젝트에 + 오라클 최대 절전 모드 사용하고 봄

내 구성은 다음과 같습니다 :

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource"/> 
     <property name="mappingResources"> 
      <list> 
       <value>one.hbm.xml</value> 
       <value>two.hbm.xml</value> 
       <value>three.hbm.xml</value> 
      </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">....</prop> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="hibernate.connection.release_mode">after_transaction</prop> 
       <prop key="hibernate.transaction.auto_close_session">true</prop> 
       <prop key="hibernate.hbm2ddl.auto">none</prop> 
      </props> 
     </property> 
    </bean> 

은 지금은 세 가지 매핑 파일을 가지고 각각 다른 스키마를 참조하십시오.

<hibernate-mapping schema="one"> 

을하지만 문제는 다른 환경에 따라 서로 다른 스키마 이름을 가지고있다 : 그래서 스키마 이름을 매핑 내가 좋아하는 각각의 매핑 파일에 이름을 제공 할 수 있습니다. 어떻게 프로그래밍 방식으로 구성 할 수 있습니까?

답변

0

dont는 hibernate config xml 파일에 스키마 이름을 제공하지 않습니다. 서로 다른 환경 요구 사항에 따라 별도의 .properties 파일을 작성하십시오. 환경에 따라 사용하십시오. 이 같은 뭔가 ..

<session-factory> 
    <!-- Database connection settings --> 
    <property name="driverClassName" value="#{db['driverClassName']}"></property> 
    <property name="url" value="#{db['url']}"></property> 
    <property name="username" value="#{db['username']}"></property> 
    <property name="password" value="#{db['password']}"></property> 

</session-factory> 

+0

상황은 내가 하나 개의 세션 공장과 데이터 소스를 가지고 내가 하나의 기본으로 스키마와는 다른 스키마에 액세스하는 테이블이 기본 스키마. – Chintan

+0

귀하의 케이스에서 어떤 데이터베이스를 사용하고 있습니까? – globetrotter

+0

나는 당신이 기업 내부의 스키마 이름을 제공 할 수 있으며 오라클 DB 괜찮 – Chintan

0
you can provide the schema name inside the entity and it will work for oracle db Entity "Account" in schema "ABC" 
@Entity 
@Table(name="ACCOUNT",schema="ABC") 
class ACCOUNT{ 
... 
} 
Entity "CUSTOMER" in schema "XYZ" 
@Entity 
@Table(name="CUSTOMER",schema="XYZ") 
class CUSTOMER{ 
... 
} 
+0

을 위해 작동하지만 열심히 다른 환경에 스키마 이름 (DEV, QA) 다른 코드화 사용하지 않으 – Chintan

+0

Maven 불만 사항 프로젝트를 사용하고 있습니까? 그렇다면 프로필을 만들고 항목을 정의 할 수 있습니다. env config에 초점을두고 건물을 어떻게 구성하는지 제안 할 것입니다. env 변수에 코드에서 사용할 변수를 제공 할 수 있습니다. – globetrotter

+0

나는 Gradle을 사용하고 있지만 제안 된 방법을 시도하고 같은 감사를 업데이트합니다 – Chintan