美文网首页
Hibernate入门(二)之相关API

Hibernate入门(二)之相关API

作者: 再见信仰 | 来源:发表于2017-11-27 23:42 被阅读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有以下特点:
    • 它是线程安全的,它的同一个实例能够多个线程共享.
    • 它是重量级的,不能随意的创建和销毁它的实例.
      由于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

          本文链接:https://www.haomeiwen.com/subject/wgikbxtx.html