Hibernate的工作流程

1.读取并解析配置文件hibernate.cfg.xml, 这是使用hibernate框架的开始,由configuration对象来完成

Configuration config=new configuration().configure();可以在MySessionFactory类中完成。

package me.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

final public class MySessionFactory {
	private static SessionFactory sessionFactory=null;
	
	private MySessionFactory() {
		//该类不能被外部实体化
	}
	static {//静态块优先执行
		sessionFactory = new Configuration().configure().buildSessionFactory();//得到一个对象
	}
	public static SessionFactory getSessionFactory() {
		return sessionFactory;//返回该对象
	}
}

2.读取并解析映射信息,调用config.buildSessionFactory();来创建SessionFactory对象。创建和销毁都想当耗费资源,通常一个系统只创建一个实例。

3.开启Session,Session session=sf.openSession();

package me.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;

import me.domain.Student;
import me.util.MySessionFactory;

public class StudentDao {
	private SessionFactory factory;
	public StudentDao(){
		factory=MySessionFactory.getSessionFactory();
	}
	public void insertStudent(Student stu) throws Exception{
		Session session=null;
		try {
			//开启session
			session=factory.openSession();
			//开启事务
			session.beginTransaction();
			session.save(stu);
			//提交事务
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			//回滚事务
			session.getTransaction().rollback();
		}finally {
			if (session!=null) {
				if (session.isOpen()) {
					//关闭session
					session.close();
				}
			}
		}
	}
	public List	 queryAllStudents()throws Exception {
		List<Student> list=new ArrayList<Student>();
		Session session=null;
		try {
			session=factory.openSession();
			String hql="from Student as s";
			Query<Student> query=session.createQuery(hql);
			list=query.getResultList();
		} finally {
			if (session!=null) {
				session.close();
			}
		}
		return list;
	}
}

4.创建并启动事务,Transition tx=session.beginTransition();。

5.通过Session 提供的方法,执行数据的持久化操作。

6.提交事务tx.commit();, 如果数据库操作失败,则需要回滚rollback();。

7.关闭Session, session.close(); , 如果不再使用hibernate, 还需要关闭SessionFactory。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值