blackartanan
2013-04-24 09:01 浏览 425
已采纳

在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条回答 默认 最新

  • 已采纳
    jinandmei jinbingchuan 2013-04-24 09:14

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

    点赞 评论 复制链接分享
  • jinnianshilongnian jinnianshilongnian 2013-04-24 09:14

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

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

    点赞 2 评论 复制链接分享
  • zyn010101 zyn010101 2013-04-24 09:37

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

    点赞 评论 复制链接分享

相关推荐