SSH与SSM学习之hibernate04——Configuration

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

@Test
public 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();
}

四、数据库中的结果

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值