SSH与SSM学习之hibernate04——Configuration

来源:互联网 发布:淘宝申请退款多久到账 编辑:程序博客网 时间:2024/06/11 09:56

  • SSH与SSM学习之hibernate04Configuration
    • 一Configuration主要方法说明
    • 二Configuration例子
    • 三推荐使StandardServiceRegistry
    • 四数据库中的结果

SSH与SSM学习之hibernate04——Configuration

一、Configuration主要方法说明

Configuration功能: 配置加载类.用于加载主配置,orm元数据加载

我们主要用到以下的方法

configure()configure(String resource)Configuration configure(URL url)Configuration configure(File configFile)

都是加载配置的,我们主要看一下我们最常用的两个

configure()configure(String resource)

查看我们的源码,是这定义的

Configuration

....public Configuration configure() throws HibernateException {    return configure( StandardServiceRegistryBuilder.DEFAULT_CFG_RESOURCE_NAME );}public Configuration configure(String resource) throws HibernateException {    standardServiceRegistryBuilder.configure( resource );    // todo : still need to have StandardServiceRegistryBuilder handle the "other cfg.xml" elements.    //      currently it just reads the config properties    properties.putAll( standardServiceRegistryBuilder.getSettings() );    return this;}....

DEFAULT_CFG_RESOURCE_NAME值

public class StandardServiceRegistryBuilder {    /**     * The default resource name for a hibernate configuration xml file.     */    public static final String DEFAULT_CFG_RESOURCE_NAME = "hibernate.cfg.xml";    .....}

所以如果我们的配置文件 hibernate.cfg.xmlsrc下,那么我们下面的两种方式是一样的

//下面的两行代码是一样的conf.configure();conf.configure("hibernate.cfg.xml");

我们的主配置文件绝大多数都是放在src 下的,所以一般都是上面两种方式加载配置的。

如果你放在 src其他目录下,需要写相对于 src下的相对位置。比如我现在的配置文件是在src/com下,那么我的添加配置应该如下

conf.configure("com/hibernate.cfg.xml");

二、Configuration例子

    /**     * Configuration 配置一     */    @Test    public void configurationDemo1(){        //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("xiaoming",18);        //6 数据持久化        session.persist(user);        //7 提交事务        t.commit();        //8 关闭session        session.close();    }

三、推荐使StandardServiceRegistry

@Testpublic void configurationDemo2(){    // 但在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("mingming",20);    //5 数据持久化    session.persist(user);    //6 提交事务    t.commit();    //7 关闭session    session.close();}

四、数据库中的结果

这里写图片描述

原创粉丝点击