spring 与hibernate Annotation配置(dao)

本文介绍了BaseDao类的设计与实现细节,该类为继承自Spring框架的HibernateDaoSupport,用于提供基本的数据访问操作。同时,还展示了如何通过CompanyDao继承BaseDao来实现特定业务逻辑的数据访问。

(1)BaseDao.java

import java.io.Serializable;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class BaseDao extends HibernateDaoSupport {

 private static final Log log = LogFactory.getLog(BaseDao.class);
 private SessionFactory mySessionFactory;
 
 public SessionFactory getMySessionFactory() {
  return mySessionFactory;
 }
 @Autowired
 public void setMySessionFactory(SessionFactory mySessionFactory) {
  this.mySessionFactory = mySessionFactory;
 }
 
 @PostConstruct  
 private void setSuperSessionFactory(){//BaseDao被初始化里执行这个方法
  super.setSessionFactory(mySessionFactory);
 }

 /* @Resource(name="sessionFactory")
 private void setSuperSessionFactory(SessionFactory sessionFactory){
  this.setSessionFactory(sessionFactory);
 }
 */
 public boolean createObj(Object o) {
  boolean rtn = false;
  log.debug("开始保存实例:"+o.getClass().getName());
  try{
   HibernateTemplate ht = this.getHibernateTemplate();
   ht.save(o);
   ht.flush();
   rtn = true;
   log.debug("保存实例["+o.getClass().getName()+"]成功!");
  }catch(HibernateException e){
   rtn = false;
   log.error("保存"+o.getClass().getName()+"实例到数据库失败!",e);
  }
  return rtn;
 }

}

 

(2)CompanyDao.java

 

import org.hibernate.Session;
import org.springframework.stereotype.Repository;
import com.entry.TCompanyInfo;

 

@Repository("companyDao")
public class CompanyDao extends BaseDao {

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值