Как использовать JDBC на работающем веб-приложении Hibernate / Spring? - PullRequest
2 голосов
/ 11 июня 2011

У меня работает веб-приложение Hibernate / Spring (HibernateDaoSupport, getHibernateTemplate() и т. Д.).Для нескольких задач мне нужно использовать JDBC (jdbcTemplate?).Как это сделать в этом сценарии?

Ответы [ 2 ]

4 голосов
/ 11 июня 2011

Просто создайте JdbcTemplate и используйте тот же DataSource, который используется HibernateDaoSupport, HibernateTemplate. Hibernate - это просто модная библиотека, работающая поверх JDBC DataSource / connection. Вы можете использовать его вручную. Попробуйте:

@Autowired
private DataSource ds;

Если вам повезет, это должно сработать. Лучшая идея - создать JdbcTemplate в виде bean-компонента Spring и ввести правильный источник данных:

<bean id="jdbcTemplate" class="org.springframework.jdbc.coreJdbcTemplate">
  <constructor-arg ref="dataSource"/>
</bean>

Рассмотрите возможность использования интерфейса JdbcOperations, также посмотрите SimpleJdbcOperations .

@Autowired
private JdbcOperations jdbc;

Если вы начинаете получать доступ к одной и той же базе данных / пулу соединений как с помощью Hibernate, так и с использованием кода прямого доступа JDBC, вам следует остерегаться некоторых побочных эффектов:

  • Кэш Hibernate L2 не знает о модификациях JDBC
  • Код JDBC не знает о оптимистической блокировке Hibernate
  • управление транзакциями
  • ...

Другой подход заключается в доступе к соединению JDBC, используемому сеансом Hibernate (в HibernateDaoSupport:

getSession().connection()
3 голосов
/ 11 июня 2011

Вы можете использовать Session.doWork для выполнения кода с использованием соединения JDBC, используемого Hibernate.

Это, конечно, требует использования и доступа к объекту Session Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...