2009-05-13 5 views
1

문제가 있습니다.최대 절전 모드 - 문제 도움말

내 응용 프로그램은 1) 일부 데이터를 검색하기 위해 기존의 최대 절전 모드 연결을 사용합니다. 이제는 데이터를 검색하는 동일한 DB의 테이블을 2) 업데이트해야하며 별도의 연결을 통해이를 수행해야합니다.

이 목적을 위해 별도로 hibernate.cfg.xml 파일을 가질 수 있습니까?

그렇다면 어떻게 연결을 구별 할 수 있습니까?

아니면 두 번째 경우에는 최대 절전 모드를 사용할 수 없습니까?

친절하게 도움.

+0

내가 물어볼 수있는 경우 - 왜 읽기 및 업데이트를 위해 별도의 연결이 필요합니까? – rudolfson

+0

나는 또한 이유를 묻습니다. 이처럼 비정상적인 패턴을 사용하려고한다는 사실은 깃발을 올려야합니다. 잠금 같은 다른 문제를 해결하려고합니까? 기본 문제를 해결하는 데 가장 효과적인 방법이 아닐 수도 있습니다. –

답변

0

이 시나리오를 테스트하지 않고 최대 절전 모드에서 가능해야합니다. 같은 매핑이지만 연결에 대한 다른 설정 (-> hibernate.cfg.xml)을 사용하여 두 개의 SessionFactory을 설정해야합니다. 응용 프로그램의 사용은 주어진 JDBC 연결 (JavaDoc for SessionFactory 참조) 세션을 열 수있는 방법을 존재가

// read entry using first session factory 
Session sessionForRead = readSessionFactory.getCurrentSession(); // or openSession() 
sessionForRead.beginTransaction(); 
MyEntry entry = (MyEntry) sessionForRead.load(MyEntry.class, someId) // or whatever to load entries 
sessionForRead.getTransaction().commit(); 

// update entry using the other session factory 
Session sessionForUpdate = updateSessionFactpry.getCurrentSession(); // or openSession() 
sessionForUpdate.beginTransaction(); 
sessionForUpdate.update(entry); 
sessionForUpdate.getTransaction().commit(); 

처럼 보일 것입니다,하지만 난 그것을 사용하지 않았다. 아마도 당신은 그것을 시도해 볼 수 있습니다. 첫 번째 해결책은 나에게 깨끗해 보인다.

0

두 가지 방법이 있습니다. 명시 적 구성으로 XML 설정 파일을 전달할 수 있습니다

AnnotationConfiguration cfg1 = new AnnotationConfiguration(); 
cfg.configure("/hibernate1.cfg.xml"); 

AnnotationConfiguration cfg2 = new AnnotationConfiguration(); 
cfg.configure("/hibernate2.cfg.xml"); 

또는 수동으로 SessionFactory를 얻기 전에 데이터베이스 속성을 업데이트 할 수 있습니다

Configuration cfg1 = new Configuration(); 
cfg1.addClass(...) 
Properties p = new Properties(); 
p.put(Environment.DATASOURCE, "jdbc/database1"); // if using JNDI 
p.put(Environment.URL, DRIVER, etc..) // if using a direction connection 
cfg1.addProperties(p); 
cfg1.buildSessionFactory(); 

... 다른 구성에 대한 를 반복하여 다른 속성을

하지만 그렇게하면 올바른 세션 팩토리에서 세션을 가져옵니다.