Hibernate入门(二)之相关API

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有以下特点:
  • 它是线程安全的,它的同一个实例能够多个线程共享.
  • 它是重量级的,不能随意的创建和销毁它的实例.
    由于SessionFactory的特点,一般情况下,一个项目中只需要一个SessionFactory,只有当应用中存在多个数据源时,才为每个数据源简历一个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中的常用方法
  • save() update() 和 saveOrUpdate()方法: 用于增加和修改对象.
  • delete()方法: 用于删除对象.
  • get() 和 load()方法: 根据主键查询.
  • create() 和 createSqlQuery()方法: 用于数据库操作对象.
  • createCriteria()方法: 条件查询.

你可能感兴趣的:(Hibernate入门(二)之相关API)