[問題] SpringORM的HibernateTransactionManager

作者: lueichun (no anonymous)   2020-12-29 16:14:37
※狀況概述:以下的程式是可以正常執行的,不過有些問題不是很懂:
※程式碼:
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource">
<property name="dataSourceName" value="ds"/>
<property name="URL" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="user" value="cuser"/>
<property name="password" value="cuser"/>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
<property name="dataSource"><ref bean="dataSource"/></property>
</bean>
<tx:annotation-driven/>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" >
<ref bean="sessionFactory" />
</property>
</bean>
※錯誤訊息:無,可正常執行。
※補充說明:就是sessionFactory必須同時吃到configLocation與dataSource這兩個屬性
才能正常執行,若是沒加入dataSource這個屬性就執行的話,會跳出
Error creating bean with name 'transactionManager'
org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested
type [javax.sql.DataSource]
所以變成需要同時添加兩個類似的屬性才能work,可是這樣感覺code就變得很冗
畢竟configLocation與dataSource這兩個屬性的內容有重複
那請問還可以怎麼寫,才能讓code更精簡??
作者: ssccg (23)   2020-12-29 18:36:00
不用configLocation吧,有dataSource就夠了
作者: GGing (小軒軒)   2020-12-30 07:16:00
要更精簡改用 Spring Boot 吧!

Links booklink

Contact Us: admin [ a t ] ucptt.com