Hibernate入门(二)之相关API

2017-11-27  本文已影响6人  再见信仰

Configuration 配置对象.

Configuration主要用于Hibernate框架加载核心配置文件和映射文件.

//这种写法会去src下读取hibernate.cfg.xml文件.默认写法
Configuration conf = new Configuration().configure();
//如果不想使用默认的配置文件,也可以使用指定目录下的配置文件
Configuration conf = new Configuration().configure("文件位置");

SessionFactory Session工厂对象

SessionFactory接口负责Hibernate的初始化和建立Session对象.它在Hibernate中起到一个缓冲区的作用,Hibernate可以将自动生成的SQL语句\映射数据以及某些可以重复利用的数据放在这个缓冲区中.同时它还保存了对数据库配置的所有映射关系,维护了当前的二级缓存.
SessionFactory是通过Configuration对象获取的,起获取方法如下:

SessionFactory sessionFactory = config.buildSessionFactory();
SessionFactory有以下特点:

Session

Session是应用程序与数据库之间交互操作的一个单线程对象,是Hibernate运作的中心,它的主要功能是为持久化对象提供创建\读取和删除的能力,所有持久化对象必须在session的管理下才可以进行持久化操作.

Session的获取方式及区别

创建SessionFactory实例后,就可以通过它来获取Session的实例.获取Session实例有两种方式,一种是通过openSession()方法,另一种是通过getCurrentSession()方法.代码如下:

Session session = sessionFactory.openSession();
        
Session session = sessionFactory.getCurrentSession();

使用openSession方法获取Session实例时,SessionFactory直接创建一个新的Session实例,并且在使用完成后需要调用close方法进行手动关闭.而getCurrentSession方法创建的Session实例会被绑定到当前线程中,它在提交或回滚操作时会自动关闭.

Session是线程不安全的,多个并发线程同事操作一个Session实例时,就可能导致Session数据存取的混乱(方法内部定义和使用时,不会出现线程安全问题).因此设计软件架构时,应避免多个线程贡献改一个Session实例.同时它是轻量级的,创建和销毁不需要消耗太多的资源.它还有一个缓存,即Hibernate一级缓存,这个缓存主要用于存放当前工作单元加载的对象.

Session中的常用方法
上一篇 下一篇

猜你喜欢

热点阅读