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