Session
Session 是持久层操作的基础,相当于JDBC中的Connnection。
Configuration config=new Configuration().configure(); //读取默认的hibernate.cfg.xml的文件
SessionFactory sessionFactory=config.buildSessionFactory(); //通过config创建sessionFactory的实例
Session session=sessionFactory.openSession(); //获得session
创建一种单例模式
package cn.hrbust.dao;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory sf = null;
private static Configuration cfg = null;
static {
cfg = new Configuration().configure();
sf = cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory()
{
return sf;
}
public void closeSessionFactory() {
sf.close();
}
}
开启单线程,线程有唯一的session实例在hibernate.cfg.xml中选项配置文件中添加
<property name="current_session_context_class">thread</property>
进行查询
//单独测试方法————保存用户对象
public void testQueryUser() {
Configuration cfg = null;
SessionFactory sf = null;
Session session = null;
Transaction ts = null;
try {
//使用单例模式创建Configuration对象和Session工厂
sf = HibernateUtil.getSessionFactory();
//保证每个读写线程有唯一的session实例
session = sf.getCurrentSession();
//创建事务
ts = session.beginTransaction();
Query query = session.createQuery("from User");
List<User> users= query.list();
for(int i=0; i<users.size(); i++) {
User u = users.get(i);
//打印输出
System.out.println(u.getName()+" "+u.getGender()+" "+u.getAge()+" "+u.getBirthday());
}
//提交事务
ts.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
if(ts != null) {
ts.rollback();
}
}finally {
//关闭session
//session.close();
//sf.close();
}
}