SSH与SSM学习之hibernate05——SessionFactory

来源:互联网 发布:阿里云负责人 编辑:程序博客网 时间:2024/06/06 14:20

  • SSH与SSM学习之hibernate05SessionFactory
    • 一SessionFactory说明
    • 二两种获取方式
      • 1 方式一
      • 2 方式二
    • 三例子
    • 四数据库表结果

SSH与SSM学习之hibernate05——SessionFactory

一、SessionFactory说明

SessionFactory功能:

用于创建操作数据库核心对象session对象的工厂.

简单说功能就一个—创建session对象

注意:

1.sessionfactory 负责保存和使用所有配置信息.消耗内存资源非常大.

2.sessionFactory属于线程安全的对象设计.

结论: 保证在web项目中,只创建一个sessionFactory.


二、两种获取方式

2.1 方式一

//Configuration功能: 配置加载类.用于加载主配置,orm元数据加载//1 创建Configuration,调用空构造方法Configuration conf = new Configuration();//2 读取指定主配置文件 => 空参加载方法,加载src下的hibernate.cfg.xml文件conf.configure();//或者调用如下的方法,与上面是一样的//sconf.configure("hibernate.cfg.xml");//如果我们主配置文件是在com下面,那么应该是 conf.configure("com/hibernate.cfg.xml");//3 根据配置信息,创建 SessionFactory 对象SessionFactory factory = conf.buildSessionFactory();

2.2 方式二

// 但在5.1.0版本汇总,hibernate则采用如下新方式获取:// 1. 配置类型安全的准服务注册类,这是当前应用的单例对象,不作修改,所以声明为final// 在configure("hibernate.cfg.xml")方法中,如果不指定资源路径,默认在类路径下寻找名为hibernate.cfg.xml的文件final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();// 2. 根据服务注册类创建一个元数据资源集,同时构建元数据并生成应用一般唯一的的session工厂SessionFactory factory = new MetadataSources(registry).buildMetadata().buildSessionFactory();

三、例子

package com.qwm.hilbernate01;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.MetadataSources;import org.hibernate.boot.registry.StandardServiceRegistry;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.junit.Test;/** * @author:qiwenming * @date:2017/9/16 0016   22:09 * @description: */public class ApiDemo2 {/*SessionFactory功能:             用于创建操作数据库核心对象session对象的工厂.             简单说功能就一个---创建session对象注意:            1.sessionfactory 负责保存和使用所有配置信息.消耗内存资源非常大.           2.sessionFactory属于线程安全的对象设计.结论: 保证在web项目中,只创建一个sessionFactory.*/    @Test    public void sfApiDeme1(){        //Configuration功能: 配置加载类.用于加载主配置,orm元数据加载        //1 创建Configuration,调用空构造方法        Configuration conf = new Configuration();        //2 读取指定主配置文件 => 空参加载方法,加载src下的hibernate.cfg.xml文件        conf.configure();        //或者调用如下的方法,与上面是一样的        //sconf.configure("hibernate.cfg.xml");        //如果我们主配置文件是在com下面,那么应该是 conf.configure("com/hibernate.cfg.xml");        //3 根据配置信息,创建 SessionFactory 对象        SessionFactory factory = conf.buildSessionFactory();        //4 获取session        Session session = factory.openSession();        //5 开启事务        Transaction t = session.beginTransaction();        User user = new User("mingge",12);        //6 数据持久化        session.persist(user);        //7 提交事务        t.commit();        //8 关闭session        session.close();    }    @Test    public void sfApiDemo2(){        // 但在5.1.0版本汇总,hibernate则采用如下新方式获取:        // 1. 配置类型安全的准服务注册类,这是当前应用的单例对象,不作修改,所以声明为final        // 在configure("hibernate.cfg.xml")方法中,如果不指定资源路径,默认在类路径下寻找名为hibernate.cfg.xml的文件        final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();        // 2. 根据服务注册类创建一个元数据资源集,同时构建元数据并生成应用一般唯一的的session工厂        SessionFactory factory = new MetadataSources(registry).buildMetadata().buildSessionFactory();        //3 获取session        Session session = factory.openSession();        //4 开启事务        Transaction t = session.beginTransaction();        User user = new User("yy",20);        //5 数据持久化        session.persist(user);        //6 提交事务        t.commit();        //7 关闭session        session.close();    }}

四、数据库表结果

这里写图片描述

原创粉丝点击