Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / как настроить 2 соединения spring hibernate / 7 сообщений из 7, страница 1 из 1
11.02.2014, 13:17
    #38556995
qwerty2012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как настроить 2 соединения spring hibernate
есть вот такое одно соединения
Код: 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
11.02.2014, 13:34
    #38557022
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как настроить 2 соединения spring hibernate
DriverManagerDataSource? А что connection pool уже не в моде?
Для отдельного DataSource нужна отдельная SessionFactory.
Самое интересное начнется если вам вдруг понадобиться одна бизнес транзакция на обе БД.
...
Рейтинг: 0 / 0
11.02.2014, 13:41
    #38557036
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как настроить 2 соединения spring hibernate
qwerty2012,
ну экзотика ведь)) ...сразу с двумя)
...
Рейтинг: 0 / 0
11.02.2014, 14:37
    #38557161
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как настроить 2 соединения spring hibernate
Оно конечно понятно, что 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
11.02.2014, 14:49
    #38557181
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как настроить 2 соединения spring hibernate
ivanra,

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

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


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