在Spring MVC框架下 一个@Repository的dao中 可以同时注入hibernateTemplate和jdbcTemplate吗

在Spring MVC框架下 一个@Repository的dao中 因为感觉jdbc查询起来编码比较方便 所有想引入spring jdbc的东西 这时一个dao中想同时注入hibernateTemplate和jdbcTemplate 这样做可以吗 存在什么潜在的问题吗?

配置XML文件
destroy-method="close"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.url}"
p:username="${jdbc.username}"
p:password="${jdbc.password}"/>





org.hibernate.dialect.MySQLInnoDBDialect

true

3
true
50
50
true
org.hibernate.cache.EhCacheProvider




基类dao
public class BaseScDao{
private Class entityClass;
@Autowired
private HibernateTemplate hibernateTemplate;
@Autowired
private JdbcTemplate jdbcTemplate;


}

继承dao
@Repository
public class PcMainDao extends BaseScDao {
public PcMain queryByYear(int year){
List list = (List)getHibernateTemplate().find("from PcMain pm where pm.Year=?", year);
if(list.size()!=0){
PcMain bean = list.iterator().next();
return bean;
}else{
return null;
}
}

public String queryEndTimeByYear(int year){
String endTime = getJdbcTemplate().queryForObject("select endTime from pc_main where year=?", String.class, year);

return endTime;
}

}

请大师指导下 谢啦!

3个回答

这样做是可以的.
若是你的dataSource是不同的,这个时候需要避免在同一个service层去调用不同的jdbctemplate或者是hibernateTemplate,因为这里需要另外配置全局事物

blackartanan
blackartanan 谢谢指导~!
接近 7 年之前 回复
jinnianshilongnian
jinnianshilongnian 不管配不配全局事务 注意混用时 hibernate有一级缓存 和 二级缓存 很可能造成数据不一致的问题
接近 7 年之前 回复

这时一个dao中想同时注入hibernateTemplate和jdbcTemplate 这样做可以吗 存在什么潜在的问题吗?

可以 但是 hibernate有一级缓存 和 二级缓存 很可能造成数据不一致的问题

jinnianshilongnian
jinnianshilongnian 查询 也是有可能有问题 还是刚才说的 如果hibernate正在更新 此时你查询 是获取不到的 一级缓存的问题 但只有注意到此问题 查询时 flush下hibernate也行(同一事务时 )
接近 7 年之前 回复
blackartanan
blackartanan 嗯 用jdbcTemplate只查询不修改 十分感谢!
接近 7 年之前 回复

顶楼上的,根据自己业务情况合理使用这两个类

blackartanan
blackartanan 多谢帮忙~!
接近 7 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问