package com.lst.lc.test.hibernate;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
/**
* hibernate测试基类,所有hibernate测试类都要继承该类
* @author sloriac
*
*/
public class BaseTestDao {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
public void init() {
Configuration configuration = new Configuration().configure();
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(ssr);
System.out.println(sessionFactory.toString());
session = sessionFactory.openSession();
transaction = session.beginTransaction();
}
public void destroy() {
transaction.commit();
session.close();
sessionFactory.close();
}
/**
* 获取当前线程的session
* @return session对象
*/
public Session getSession(){
init();
return this.session;
}
/**
* 保存操作
* @param object 需要保存的对象
*/
public void save(Object object){
getSession().save(object);
}
/**
* 更新操作
* @param object 更新对象
*/
public void update(Object object){
getSession().update(object);
}
/**
* 保存或者更新
* @param object 操作对象
*/
public void saveOrUpdate(Object object){
getSession().saveOrUpdate(object);
}
/**
* get操作
* @param arg0 类
* @param arg1 主键
* @return
*/
public <T> T get(Class<?> arg0, Serializable arg1){
return (T) getSession().get(arg0, arg1);
}
/**
* 获取Query
* @param hql
* @return
*/
public Query query(String hql){
return getSession().createQuery(hql);
}
/**
* 删除
* @param object 对象
*/
public void delete(Object object){
getSession().delete(object);
}
/**
* 获取某个表的全部信息
* @param entity 表对应实体的类名
* @return 实体List
*/
public <T> List<T> getAll(String entity){
String string = "from " + entity;
Query query = query(string);
@SuppressWarnings("unchecked")
List<T> ts = query.list();
return ts;
}
public SQLQuery sqlQuery(String query){
return getSession().createSQLQuery(query);
}
}