2009-08-26 3 views
1

우리는 Spring/Hibernate 애플리케이션을 가지고 있으며 성능 및 개발 시간과 관련된 이유로 JDBC를 소량 추가하려고합니다. 이 DAO 하위 클래스를 HibernateDaoSupport로 만들고 세션 연결을 사용하여 JDBC를 수행 할 수 있지만 JdbcTemplate을 사용하고 싶습니다. 그러나 JdbcTemplate은 java.sql.Datasource를 사용하여 초기화됩니다. 어떻게 기존의 Hibernate SessionFactory를 사용하여 그것을 초기화 할 수 있습니까?최대 절전 모드 SessionFactory에서 JDBCTemplate 사용하기?

답변

4

SessionFactory 구현에 DataSource를 제공해야합니까? 왜 JDBC 템플릿에 연결하지 않습니까?

어떤 SessionFactory 구현을 사용하고 있습니까? 당신이 봄 구현을 사용하는 경우, AbstractSessionFactoryBean.html#getDataSource()

+0

최대 절전 모드 속성으로 초기화 된 AnnotationSessionFactoryBean을 사용하여 생성됩니다. 우리는 DataSource를 생성하고 초기화하지 않았습니다. SessionFactoryBean에서 DataSource를 가져올 수 없기 때문에 참조를 유지할 수 없습니다. <속성 이름 ="hibernateProperties "REF ="hibernateProperties "/> 은 ... hibernateSessionFactory는 SessionFactory에있다. 어떻게 SessionFactoryBean에 대한 참조를 얻을 것? –

+2

SessionFactoryBean가 구축하고 사용자 정의는 무엇인가 SessionFactory? 최악의 경우, 최대 절전 속성에 JDBC 드라이버 이름과 연결 URL을 제공하고 있습니까? 그렇다면 데이터 소스를 인스턴스화 할 수 있어야합니다. 데이터 소스를 빌드하고 SessionFactoryBean과 JDBCTemplate – Kevin

+0

사용자 정의 FactoryBean은 AnnotationSessionFactoryBean의 하위 클래스로서, 유지 보수상의 이유로 다른 데이터 소스를 소개하지 않으며, 최대 절전 모드 구성에서 데이터 소스를 추출하는 것처럼 보이지 않습니다. 나는 필요한 것을 위해 많은 일을 좋아한다. 돌이켜 보면, 처음부터 그런 식으로 만들어 졌을 것입니다. 그러나 앱은 본질적으로 사실적으로 스프링으로 변환되었습니다. 나는 JdbcTemplate보다는 hibernate의 createSQLQuery()를 사용할 것이다. 도와 주셔서 감사합니다. –

0

내가 왜 표시되지 않습니다 "우리 최대 절전 모드 구성에서 데이터 소스를 추출하는 것은 내가 원하는 것을 위해 작품의 많은 것 같다"참조 그렇게 많은 노력이 필요합니다. 몇 개의 태그와 속성을 만들고 잘라내어 복사하는 것입니다.

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource"> 
      <ref bean="dataSource"/>  
     </property> 
... 
</bean> 

"? 당신이 봄 구현을 사용하는 경우 SessionFactory를 구현 당신이 사용하고 AbstractSessionFactoryBean.html # getDataSource()을 참조하십시오"

: 예를 들어

getDataSource()는 Spring 2.5에서만 사용할 수 있습니다. 참조는 다음과 같습니다. Click here

스프링 2.0에는 getDataSource()가 없습니다. 여기에 참조는 다음과 같습니다 Click here

우리의 세션 공장 이 ... hibernateSessionFactory가 의 SessionFactory 인 최대 절전 모드 속성으로 초기화 AnnotationSessionFactoryBean 를 사용하여 만들었습니다. SessionFactoryBean에 대한 참조를 얻으려면 어떻게해야합니까?

왜 AnnotationSessionFactoryBean의 하위 클래스 인 LocalSessionFactoryBean 대신 SessionFactory를 사용했는지 궁금합니다.

라인이 아님 bean id = "hibernateSessionFactory"은 이미 SessionFactoryBean을 참조합니까?

+0

"많은 작업"은 상대적인 용어입니다. 필자의 경우에는 c3p0 기반 데이터 소스를 만들고 모든 설정을 원래 속성 파일에서이 속성으로 변환해야합니다. Hibernate와 c3p0 사이의 일부 설정에서 속성 이름이 변경되므로 모두 확인해야합니다. JDBC를 사용하는 것은 한 시간 안에 JDBCTemplate을 사용하기 만하면되므로 시간이 걸리지 않습니다. AnnotationSessionFactoryBean 서브 클래스 LocalSessionFactoryBean. 세션 팩토리에 대한 참조가 JDBCTemplate을 초기화하는 데 도움이되지 않습니다. 데이터 소스가 필요합니다. –

2

언제나 최대 절전 모드 세션의 doWork 메서드를 사용할 수 있습니다. 이것은 java.sql.Connection을 제공합니다. 이 연결을 사용하여 SingleConnectionDataSource 구조를 만들 수 있습니다 (기본 연결을 닫지 않으려면 두 번째 인수가 항상 true이어야 함).이 데이터 소스를 JDBCTemplate에 전달하십시오.