Hibernate获得session的方式

来源:互联网 发布:windows怎么看配置输入 编辑:程序博客网 时间:2024/06/05 07:53

首先建立一个产生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();

}

}

原创粉丝点击