ҳ-Career-HOME-Сﲿ

Hibernate笔记之各对象接口

闲暇时间看看hibernate视频,把一些概念性的东西记录下来,加深理解:

package cn.lihuoqing.test;

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

import cn.lihuoqing.pojo.Student;

public class SaveDemo {
	public static void main(String[] args) {
		//new的时候hibernate自动加载hibernate.cfg.xml文件,hibernate.cfg.xml可以改名
		//改名后需在configure("名称")指定。
		Configuration config = new Configuration().configure();

		//每个数据库对应一个SessionFactory对象,它是重量级的对象,创建比较耗时,一个项目里尽量就用一个,另外它线程安全
		SessionFactory sf = config.buildSessionFactory();
		Transaction tx = null;

		//跟Jdbc中connection可以对比,但有很大差别,可以理解为session是connection的封装,另外session中涉及到了缓存等高级部分
		//hibernate默认实现了连接池,可以在hibernate中配置连接池的参数,数量等,另外hibernate还可以继承第三方连接池,session的openSession
		//方法就是在hibernate连接池中取得的连接,session非线程安全
		Session session = null;

		//hibernate有个属相autocommit(也是可以配置的),默认关闭,所以我们通常要手动管理事务
		try {
			session = sf.openSession();
			Student stu = new Student();
			stu.setUsername("张三");
			stu.setPassword("123456");

			tx = session.beginTransaction();
			session.save(stu);
			tx.commit();

		} catch (Exception e) {
			tx.rollback();
			e.printStackTrace();
		} finally {
			if (session != null && session.isConnected()) {
				session.close();
				session = null;
			}
		}
	}
}
关于作者

回复

*