Было несколько обсуждений этой темы на сайте, но я использую аннотации по всему для создания sessionFactory.
private SessionFactory sessionFactory;
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
Вот так выглядит файл hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">xxxxx</property>
<property name="hibernate.connection.url">xxxxx</property>
<property name="hibernate.connection.username">XXXX</property>
<property name="hibernate.connection.characterEncoding">utf-8</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.use_sql_comments">true</property>
<mapping class="XXXX" />
</session-factory>
</hibernate-configuration>
Это applicationContext.xml
<!-- add tomcat datasource instance to springs context -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/XXXXDS" />
<property name="resourceRef" value="true" />
</bean>
Как добиться интеграции нескольких БД в этом случае.Одно решение, с которым я столкнулся, состояло в том, чтобы создать несколько файлов hibernate.cfg.xml и создать для них другую фабрику сессий.
Но у меня есть два сомнения: 1) Как указать в autowiring, какой sessionFactory выбрать, 2) Мне придется дублировать большую часть информации через hibernate.xml, например, bean-компоненты.Есть ли более чистый подход к этому вопросу?