У нас есть приложение Spring/Hibernate, и мы хотели бы добавить небольшое количество JDBC по причинам, связанным с производительностью и временем разработки. Я могу сделать этот подкласс dao HibernateDaoSupport и использовать соединение сеанса для выполнения моего JDBC, но я бы предпочел использовать JdbcTemplate. Однако JdbcTemplate инициализируется с использованием java.sql.Datasource. Как я могу использовать существующую Hibernate SessionFactory для ее инициализации?
Использование JDBCTemplate с Hibernate SessionFactory?
Ответы (3)
Разве вам не нужно предоставлять DataSource для реализации SessionFactory? Почему бы вам не подключить это к шаблону JDBC?
Какую реализацию SessionFactory вы используете? Если вы используете реализации Spring, см. AbstractSessionFactoryBean.html#getDataSource()
Вы всегда можете использовать doWork — это дает вам java.sql.Connection. Это соединение можно использовать для создания конструкции SingleConnectionDataSource (примечание: второй аргумент всегда должен быть истинным, поскольку вы не хотите закрывать базовое соединение) и передать этот источник данных в ваш JDBCTemplate...
«извлечение источника данных из нашей конфигурации гибернации кажется большим объемом работы для того, что мне нужно»
Не понимаю, зачем столько труда. Это просто вопрос создания, вырезания и копирования пары тегов и свойств.
Например:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
...
</bean>
"Какую реализацию SessionFactory вы используете? Если вы используете реализации Spring, см. раздел AbstractSessionFactoryBean.html#getDataSource()"
По-видимому, getDataSource() доступен только для Spring 2.5. Вот ссылка: Нажмите здесь
Spring 2.0 не имеет функции getDataSource(). Вот ссылка: Нажмите здесь
Наша фабрика сеансов была создана с использованием AnnotationSessionFactoryBean, инициализированного со свойствами гибернации... hibernateSessionFactory — это SessionFactory. Как мне получить ссылку на SessionFactoryBean?
Мне интересно, почему вы использовали SessionFactory вместо LocalSessionFactoryBean, который является подклассом AnnotationSessionFactoryBean?
Разве строка bean id="hibernateSessionFactory" уже не ссылается на SessionFactoryBean?