0

Я хочу подключиться к двум серверам в спящем режиме. Но я использую класс java как конфигурацию. Как сообщает Session factory, он будет использовать соединение одно или два соединения.несколько соединений с использованием спящего режима

это мой класс:

@Configuration 
@ComponentScan(basePackages = {"id.bni.hcms"}) 
@EnableTransactionManagement 
public class RepositoryConfig { 

     @Bean(name = "dataSource") 
    public DataSource initDataSource(){ 
     System.out.println("datasource inited initDataSource"); 
     try { 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
     } catch (ClassNotFoundException ex) { 

     } 
     String url = "jdbc:oracle:thin:@//xxx.xxx.xx.xxx:xxx/xxxx"; 
     String username = "xxx"; 
     String password = "xxxx"; 

     ConnectionFactory cf = new DriverManagerConnectionFactory(url, username, password); 
     PoolableConnectionFactory pcf = new PoolableConnectionFactory(cf, null); 
     GenericObjectPool<PoolableConnection> cp = new GenericObjectPool<>(pcf); 

     pcf.setPool(cp); 

     return new PoolingDataSource<>(cp); 
    } 

    @Bean(name = "sessionFactory") 
    public LocalSessionFactoryBean sessionFactoryBean(DataSource dataSource){ 
     LocalSessionFactoryBean sfb = new LocalSessionFactoryBean(); 
     sfb.setDataSource(dataSource); 
     sfb.setPackagesToScan("id.bni.hcms"); 

     Properties props = sfb.getHibernateProperties(); 

     props.put("hibernate.format_sql", true); 
     props.put("hibernate.show_sql", true); 
     props.put("hibernate.dialect", "org.hibernate.dialect.Oracle9iDialect"); 

     return sfb; 
    } 

    @Bean(name = "transactionManager") 
    public PlatformTransactionManager getHibernateTransactionManager(SessionFactory sessionFactory){ 
     HibernateTransactionManager trxMgr = new HibernateTransactionManager(sessionFactory); 

     return trxMgr; 
    } 
} 

я хочу добавить еще одно соединение:

String url = "jdbc:oracle:thin:@//yyyy:yyyy/yyyy"; 
    String username = "yyyy"; 
    String password = "yyyy"; 

как дать информацию SessionFactory, используя одно соединение или другое соединение?

это пример использования сеанса завода:

@Repository 
public class KaryawanDaoImpl implements KaryawanDao{ 
    @Autowired 
    private SessionFactory sessionFactory; 

    @Override 
    @Transactional(propagation = Propagation.REQUIRED) 
    public Karyawan find(String username, String password) { 
      String hql = " SELECT * from table"; 
      Query query = sessionFactory.getCurrentSession().createSQLQuery(hql).addEntity(Karyawan.class); 
      query.setString("user", username); 
      query.setString("pwd", password); 
      Karyawan result = (Karyawan)query.uniqueResult(); 

      return result; 
    } 

    @Override 
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) 
    public void save(Karyawan e) { 
     sessionFactory.getCurrentSession() 
      .saveOrUpdate(e); 
    } 
} 

ответ

0

Использование аннотаций отображения в качестве примера:

Configuration cfg1 = new AnnotationConfiguration(); 
cfg1.configure("/hibernate-oracle.cfg.xml"); 
cfg1.addAnnotatedClass(SomeClass.class); // mapped classes 
cfg1.addAnnotatedClass(SomeOtherClass.class); 
SessionFactory sf1 = cfg1.buildSessionFactory(); 

Configuration cfg2 = new AnnotationConfiguration(); 
cfg2.configure("/hibernate-mysql.cfg.xml"); 
cfg2.addAnnotatedClass(SomeClass.class); // could be the same or different than above 
cfg2.addAnnotatedClass(SomeOtherClass.class); 
SessionFactory sf2 = cfg2.buildSessionFactory(); 

Затем используйте SF1 и SF2, чтобы получить сессии для каждой базы данных. Для файлов сопоставления вы просто используете cfg.addClass вместо addAnnotatedClass. В этом случае поместите файлы cfg.xml в корневой пакет. У них будет информация о диалекте и соединении Oracle или MySQL.

+0

, но у меня есть большой проект, и настройка не может быть изменена, поэтому я не могу изменить конфигурацию java-класса в xml-конфигурацию. у вас есть идея использовать конфигурацию java-класса и как рассказать sessionfactory? – user3505775

Смежные вопросы