hibernate - 如何在工作 Hibernate/Spring Web 应用程序上使用 JDBC?

标签 hibernate spring jdbc

我有工作的 Hibernate/Spring Web 应用程序(HibernateDaoSupportgetHibernateTemplate() 等)。对于几个任务,我需要使用 JDBC(jdbcTemplate?)。在那种场景下该怎么做?

最佳答案

只需创建 JdbcTemplate 并使用 HibernateDaoSupportHibernateTemplate 使用的相同 DataSource。 Hibernate 只是一个在 JDBC DataSource/connection 之上工作的奇特库。您可以手动使用它。尝试:

@Autowired
private DataSource ds;

如果你幸运的话,这应该可行。更好的想法是创建 JdbcTemplate 作为 Spring bean 并注入(inject)适当的数据源:

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

考虑使用JdbcOperations接口(interface),另请参阅SimpleJdbcOperations .

@Autowired
private JdbcOperations jdbc;

如果您开始通过 Hibernate 并使用直接 JDBC 访问代码来访问同一个数据库/连接池,则必须注意一些副作用:

  • Hibernate L2 缓存不知道 JDBC 修改
  • JDBC 代码不知道 Hibernate 乐观锁定
  • 交易管理
  • ...
<小时/>

另一种方法是访问 Hibernate session 使用的 JDBC 连接(在 HibernateDaoSupport 中:

getSession().connection()

关于hibernate - 如何在工作 Hibernate/Spring Web 应用程序上使用 JDBC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6316172/

相关文章:

java - JPA,playframework,在分组依据之前选择顺序

java - 为什么 OPTIMISTIC_FORCE_INCREMENT 不增加二级缓存中的版本

java - org.hsqldb.HsqlException : user lacks privilege or object not found: USER0_. 名称

mysql - 使用 JDBC 连接器读取 Spark 中 MySQL 表的一部分

java - 从 Servlet 连接到 MySQL 不工作

Java事务管理器

java - 如何提高 Java 中的 Hibernate 性能?

java - 每天的spring cron表达式1 :01:am

spring - 注册成功后自动登录

java - 如何在 Jetty 的 Java Servlet 中使用 JavaDB 数据库?