2016-04-13 4 views
0

Мы сконфигурируем фасоль Session Factory в XML. Имя сеанса по умолчанию считывается из файла свойств, который находится в папке ресурса кода. Для новой цели мне нужно изменить свойство схемы по умолчанию на что-то еще во время выполнения. Я не могу понять, как это сделать.Как изменить настройку схемы SessionFactory для Hibernate во время выполнения?

Сеанс завод создан в проводке XML следующим образом:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.default_schema">${oracle.default_schema}</prop> 
      <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> 
      <prop key="hibernate.generate_statistics">false</prop> 
      ... other properties ... 
     </props> 
    </property> 
    ... lots of mapping files and annotated classes ... 

Я думал, что я мог бы вытащить сессионный завод из контекста Spring, а может быть обеспечивают класс Properties, чтобы (я надеялся) переопределить сеанс по умолчанию собственности и ничего больше, а затем продолжать свой путь счастливо.

К сожалению, когда я пытаюсь получить фабрику фабрики сессий из контекста, она имеет тип SessionFactoryImpl, а не AnnotationSessionFactoryBean. Это значит, что метод setHibernateProperties() недоступен для меня.

Я не уверен, могу ли я позвонить по телефону ALTER SESSION. Поскольку фабрика сеансов получена нашими классами DAO в библиотеке, у меня нет простого способа обернуть фабрику сеансов необходимым кодом.

Любые идеи?

ответ

0

Создайте несколько конфигурационных файлов JPA, по одному для каждой среды, которую вы хотите поддержать, а затем импортируйте в свою конфигурацию пружины.

<import resource="classpath:services-environment-${environment.name}.xml"/> 

Для меня есть файл для прода, тестирования, а также для каждого пользователя, устанавливая системное свойство environment.name, правильная конфигурация JPA загружаются.