На сайте было несколько обсуждений по этой теме, но я использую аннотации для создания 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) Как мне указать в автоматическом подключении, какой sessionFactory выбрать, 2) Мне придется дублировать много информации в hibernate.xml, например beans. Есть ли более чистый подход к этой проблеме?