powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / как настроить 2 соединения spring hibernate
7 сообщений из 7, страница 1 из 1
как настроить 2 соединения spring hibernate
    #38556995
qwerty2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть вот такое одно соединения
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
    <bean id="jdbcPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
      <property name="location" value="/resources/jdbc.properties"/>    
    </bean>
    
    <bean id="dataSource"  class="org.springframework.jdbc.datasource.DriverManagerDataSource" >    
        <property name="driverClassName" value="${jdbc.driverClassName}"/>      
        <property name="url" value="${jdbc.databaseurl}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    
    <bean name="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" id="sessionFactory">          
        <property name="dataSource" ref="dataSource"/>
        <property name="packagesToScan">
            <list>
                <value>net.entities</value>
            </list>
        </property>        
        <property name="hibernateProperties">
            <value>
                hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
                hibernate.show_sql=false
                hibernate.connection.charSet=UTF-8
            </value>
        </property>
    </bean>   
   <bean name="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    
    <tx:annotation-driven transaction-manager="txManager"/>   



как добавить другое соединение к другой базе.
...
Рейтинг: 0 / 0
как настроить 2 соединения spring hibernate
    #38557022
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DriverManagerDataSource? А что connection pool уже не в моде?
Для отдельного DataSource нужна отдельная SessionFactory.
Самое интересное начнется если вам вдруг понадобиться одна бизнес транзакция на обе БД.
...
Рейтинг: 0 / 0
как настроить 2 соединения spring hibernate
    #38557036
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty2012,
ну экзотика ведь)) ...сразу с двумя)
...
Рейтинг: 0 / 0
как настроить 2 соединения spring hibernate
    #38557161
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оно конечно понятно, что RTFM, но ответы прекрасны: у автора вопросов не осталось :)
А если серьезно, то вот цитата из документации (10.5.6.2 Multiple Transaction Managers with @Transactional):
- зеркалим все описания и именуем транзакции
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  <tx:annotation-driven/>

  <bean id="transactionManager1" class="org.springframework.jdbc.DataSourceTransactionManager">
    ...
    <qualifier value="order"/>
  </bean>

  <bean id="transactionManager2" class="org.springframework.jdbc.DataSourceTransactionManager">
    ...
    <qualifier value="account"/>
  </bean>  


используем именованные транзакции:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
  public class TransactionalService {
  
    @Transactional("order")
    public void setSomething(String name) { ... }
  
    @Transactional("account")
    public void doSomething() { ... }
  }


Если транзакции не именовать, то все будет выполняться в контексте транзакции БД с именем по умолчанию ( transactionManager ), а ее можно "прицепить" только к 1 соединению, если коротко - ничего не выйдет.
Ну, а дальше пытаемся не запутаться в транзакциях, если необходимо работать сразу с 2 базами в 1 методе
...
Рейтинг: 0 / 0
как настроить 2 соединения spring hibernate
    #38557181
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,

Траназкции это отдельный вопрос. Для чего эти qualifiers, что-то не очень понял. По-умолчанию каждый Session будет работать в своей транзакции со своей БД. А вот для распраделенной транзакции, нужен будет соответствующий TransactionManager. С ним @Transactional нормально обработает бизнес транзакцию на обоих DataSource, если они настроены как XA.

qualifiers как-то недовелось пользовать. Поэтому в чем его полезная нагрузка, что-то не догоняют. Может расскажите какой сценарий использования?
...
Рейтинг: 0 / 0
как настроить 2 соединения spring hibernate
    #38557238
qwerty2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да я просто все сдублировал с новыми айди
...
Рейтинг: 0 / 0
как настроить 2 соединения spring hibernate
    #38557245
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати да, еще вопрос, что за сценарий:
- 2 базы разной структуры, с которыми надо работать одновременно -> именованные менеджеры (qualifiers), либо XA (не всегда доступно)
- базы с одинаковой структурой, динамический выбор одной из них (например, в зависимости от локали пользователя) -> AbstractRoutingDataSource. Вот, например
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / как настроить 2 соединения spring hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]