2012-11-08 5 views
1

전체 시나리오를 이해하려면 JTA에 대한 아이디어가 없습니다.이 링크 How to maintain acid property of 3 sequential transaction of three diffrenet databases을 따르십시오.하지만 게시물의 제안에 따라 분산 트랜잭션을 사용해야합니다. 나는 아파치 - 톰캣 서버를 사용하고있다.분산 트랜잭션을 사용하는 방법 일반 jdbc를 사용하는 JTA

하지만 내가 말했듯이 JTA에 대해서는 잘 모르겠다. 문제는 15 가지 이상의 데이터베이스 연결이 있고 어떤 조건에 따라 각각의 데이터베이스가 연결된다는 것이다. 그래서 나는 각 데이터베이스에 대해 hibernate.cfg.xml과 세션 팩토리와 엔티티를 생성 할 수 없다.

그럼 제 질문은 일반 JDBC에서 JTA를 사용할 수 있습니까? 가능한 경우 나에게 몇 가지 링크 또는 예제를 제공하십시오.

답변

1

예. 일반 JDBC와 함께 JTA를 사용할 수 있습니다. 일반적인 생각은 JDBC Connection 객체를 사용하여 트랜잭션 경계를 선언하는 대신 JTA 구현에서 제공하는 트랜잭션 관리자 객체를 사용하여 트랜잭션 경계를 선언하는 것입니다. Connection 다음 코드를 수행 할 수있는 많은 데이터베이스를 통해 트랜잭션 경계를 선언 Bitronix Transaction Manager의 경우 예를 들어

가, :

 PoolingDataSource derbyDataSource1 = new PoolingDataSource(); 
     derbyDataSource1.setClassName("org.apache.derby.jdbc.EmbeddedXADataSource"); 
     derbyDataSource1.setUniqueName("derby1"); 
     derbyDataSource1.getDriverProperties().setProperty("databaseName", "database1"); 
     derbyDataSource1.init(); 

     PoolingDataSource derbyDataSource2= new PoolingDataSource(); 
     derbyDataSource2.setClassName("org.apache.derby.jdbc.EmbeddedXADataSource"); 
     derbyDataSource2.setUniqueName("derby2"); 
     derbyDataSource2.getDriverProperties().setProperty("databaseName", "database2"); 
     derbyDataSource2.init(); 

     BitronixTransactionManager btm = TransactionManagerServices.getTransactionManager(); 

     btm.begin(); 
     try { 
      Connection c1= derbyDataSource1.getConnection(); 
      Connection c2= derbyDataSource2.getConnection(); 

      /***Use c1 and c2 to execute statements again their corresponding DBs as usual**/ 


      btm.commit(); 
     } catch (SQLException ex) { 
      ex.printStackTrace(); 
      btm.rollback(); 
     } 
+0

확인이 내 최근 게시물을 본 http://stackoverflow.com/questions/13269718/how-to-maintain-acid-property-of-three-sequential-of-three-diffrenet-dat은 분산 데이터베이스에서 잘 작동하는 예제입니다. –

+0

그리고 BitronixTransactionManager 대신 JTA를 사용할 수도 있고 BitronixTransactionManager를 사용할 수도 있습니다. –

+0

안녕하세요 arvin, BitronixTransactionManager는 JTA 구현 중 하나입니다. –

관련 문제