一.Configuration对象sql
解释:Hibernate的配置文件对象,是Hibernate启动加载的第一个对象,它会定位到映射文档的位置,读取配置文件,建立一个SessionFactory对象。数据库
做用:加载核心配置文件缓存
用法:安全
1.若是是Hibernate.properties文件(里面是键值对存放的配置信息)session
Configuration cfg = new Configuration() //直接new就好了
2.若是是Hibernate.cfg.xml文件app
Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); //后面还要在跟一个configure()方法,方法里面能够传配置文件路径,不写默认加载就在src下名字叫hibernate.cfg.xml文件
若是该配置文件在src下的config包下
Configuration cfg = new Configuration().configure("/config/hibernate.cfg.xml");
注意:若是hibernate.cfg.xml里面没有加载映射文件(<mapping resource="">),那么就须要该对象来帮你加载映射文件ui
Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); cfg.addResource("com/xxx/pojo/Customer.hbm.xml");
二。SessionFactory-session工厂对象spa
概述:SessionFactory接口负责HIbernate的初始化和创建session对象。他在hibernate中起到了一个缓冲区做用,hibernate能够将自动生成的sql语句、映射数据以及某些能够重复利用的数据放在这个缓冲区中,同时他还保存了对数据库配置的全部映射关系,维护当前的二级缓存。hibernate
获取:线程
SessionFactory sessionFactory = cfg.buildSessionFactory();//貌似这个方法很通用
注意:不一样版本
1)在hibernate 3.x中的写法 SessionFactory sf = cfg.buildSessionFactory();
2)hibernate 4.0~hibernate 4.3的写法 ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
3)hibernate 4.3的写法 ServiceRegistry registry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build(); SessionFactory sf = cfg.buildSessionFactory(registry);
4)hibernate 5.1的写法 StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build(); SessionFactory sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();
特色:
通常状况下,一个项目只须要一个SessionFactory,只有当有多个数据源的时候,才会为每一个数据源创建一个SessionFactory实例
三.Session对象
概述:Session接口负责负责被持久化对象的CRUD操做。Session对象是线程不安全的,(这个session其实就至关于jdbc里面的connection)是应用程序与数据库之间的交互操做的一个单线程对象,是hibernate运转核心。
功能:为持久化对象提供建立,读取和删除的能力,全部的持久化对象必须在session的管理下才能够进行持久化操做(为后面持久化类的状态作铺垫)
获取:
1.第一种方式获取:
Session session = sessionFactory.openSession(); //SessionFactory直接建立一个新的session实例,而且使用完成后须要调用close方法将session关闭
2.第二种方式:
Session session = SessionFactory.getCurrentSession(); //将session对象绑定到当前的线程中,随着事务提交或者回滚,线程结束,session也会自动销毁
session里面的方法
四:Transaction对象
Transaction接口主要用于管理事务,它是hibernate的数据库事务接口。
hibernate开启事务:
Transaction tx = session.beginTransaction();
方法: