Author: 江南白衣
当报表查询必须使用SQL时,大家有三种选择:
第一、使用Hibernate 的sql 查询函数将查询结果对象转为对象。
第二、使用Hibernate session的getConnection 获得JDBC Connection,然后进行纯JDBC API操作;
第三、选择把JDBC Template作为一种很不错的JDBC Utils来使用。
JDBCTemplate的使用很简单,只要在ApplicationContext文件里定义一个jdbcTemplate节点,POJO获得注入后可以直接执行操作,不需要继承什么基类,具体例子见销售报表查询类SaleReportManager:
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
SqlRowSet rs = jdbcTemplate.queryForRowSet(sql, params);
Tips1: jdbcTemplate有很多的ORM化回调操作将返回结果转为对象列表,但很多时候还是需要返回ResultSet,Spring有提供一个类似ResultSet的,实现JDBC3.0 RowSet接口的 Spring SqlRowSet。
Tips2:.注意jdbcTemplate尽量只执行查询操作,莫要进行更新,否则会破坏Hibernate的二级缓存体系。