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();

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章