Hibernate获得session的方式

首先建立一个产生Session的类如下:

import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;

@Repository
public class AbstractHibernateDAO {

@Resource
private  SessionFactory sessionFactory;
public Session getSession() {
return sessionFactory.getCurrentSession();
}


@Deprecated
public int excuteBySql(String sql){
Query query = getSession().createSQLQuery(sql);
return query.executeUpdate();
}


@Deprecated
public List queryBySql(String sql){
return getSession().createSQLQuery(sql).list();
}


@Deprecated
    public Integer executeHql(String hql, List<Object> param) {
        Query q = this.getSession().createQuery(hql);
        if (param != null && param.size() > 0) {
            for (int i = 0; i < param.size(); i++) {
                q.setParameter(i, param.get(i));
            }
        }
        return q.executeUpdate();
    }
}

然后再创建一个类去继承上面的类

import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@SuppressWarnings("unchecked")
public class DaoSupportImpl<T> extends AbstractHibernateDAO {
    private Class<T> clazz;
    public DaoSupportImpl() {
        ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
        this.clazz = (Class<T>) pt.getActualTypeArguments()[0]; 
    }
    public int save(T entity) {
        return (Integer) getSession().save(entity);
    }
   public void update(T entity) {
        getSession().update(entity);
    }
    public T merge(T entity){
        return (T) getSession().merge(entity);
    }

    public void saveOrUpdate(T entity) {
        getSession().saveOrUpdate(entity);
    }
    public void delete(Serializable id) {
        Object obj = getById(id);
        if (obj != null) {
            getSession().delete(obj);
        }
    }
    public T getById(Serializable id) {
        if (id == null) {
            return null;
        } else {
            return (T) getSession().get(clazz, id);
        }
    }

}

然后我们自己写的DAO实现类就可以这样获得Session:

public class AssetidmapDaoImpl extends DaoSupportImpl<Assetidmap>{

public void main(){

Session session = getSession();

}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值