Hibernate详解
Hibernate详解
1、 Configuration管理读取配置文件
// 1、新建Configuration对象 Configuration cfg = new Configuration().configure(); // 读取src下hibernate.properties,不推荐使用 //Configuration cfg1 = new Configuration(); // 默认读取是src下的hibernate.cfg.xml // 如果hibernate的核心配置文件不叫hibernate.cfg.xml // Configuration cfg2 = new Configuration().configure("hb.cfg.xml"); // 可编程式,不需要配置文件 // cfg2.addProperties(extraProperties); // cfg2.addResource(resourceName); |
2、 SessionFactory对象
// 2、通过Configuration对象创建SessionFactory //在hibernate3.x中是这样写 //SessionFactory sf = cfg.buildSessionFactory(); // hibernate4.3 ServiceRegistry sr = new StandardServiceRegistryBuilder() .applySettings(cfg.getProperties()).build(); SessionFactory sf = cfg.buildSessionFactory(sr); |
3、 Session对象
- Hibernate对数据库crud操作,主要使用session。
- Session可以理解为对Connection对象的一个包装。
- Session是一个线程不安全的对象,生命周期非常短暂,一般和事务一一对应。
- 使用完马上关闭就是为了放置线程不安全问题。
- Session又成为hibernate的一级缓存。
4、 Transaction对象
-
事务管理对象,通过session来获取该对象。
// 第一种 Transaction tx = session.beginTransaction(); // 第二种 Transaction getTx = session.getTransaction(); getTx.begin(); |
-
事务和异常处理
public class TestException {
public static void main(String[] args) { Configuration cfg = null; SessionFactory sf = null; Session session = null; Transaction tx = null; try { // 1、新建Configuration对象 cfg = new Configuration().configure(); // 2、通过Configuration对象创建SessionFactory ServiceRegistry sr = new StandardServiceRegistryBuilder() .applySettings(cfg.getProperties()).build(); sf = cfg.buildSessionFactory(sr); // 3、通过SessionFactory得到Session session = sf.openSession(); // 4、通过Session对象得到Transaction对象 tx = session.beginTransaction(); // 5、操作数据 User u = (User) session.get(User.class, 2); System.out.println(u); // 6、提交事务 tx.commit(); } catch (Exception e) { e.printStackTrace(); // 回滚事务 tx.rollback(); } finally { // 7、关闭session if(session != null && session.isOpen()) session.close(); } } } |