其他分享
首页 > 其他分享> > HIbernate五大关键接口

HIbernate五大关键接口

作者:互联网

Hibernate接口

一、Configuration

负责Hibernate配置工作,创建SessionFactory对象,在Hibernate启动过程中,Configuration类的实例首先定位在映射文件位置,读取配置,然后创建SessionFactory对象。用于3、4版本。

    @Test
    public void testConfig(){
    //读取src下hibernate.properties,不推荐使用
    Configuration cfg1 = new Configuration();
    
    //默认读取src下的hibernate,cfg.xml 推荐
    Configuration cfg2 = new Configuration().configure();
    
    //如果hibernate的核心配置文件不叫hibernate.cfg.xml,比如hb.cfg.xml
    Configuration cfg3 = new Configuration().configure("hb.cfg.xml");
    
    //可编程式,可以不使用配置文件
    //cfg.addProperties();
    //cfg.addResource();

}

 

二、SessionFactory

SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,使用工厂模式创建Session对象。需要注意的是SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

    @Test
    public void testSessionFactory(){
    //默认读取src下的hibernate.cfg.xml,推荐
    Configuration cfg = new Configuration().configure();
    
    //通过Configuration创建SessionFactory对象
    //在hibernate3.x中是这种写法
    SessionFactory sf1 = cfg.buildSessionFactory();
    
    //在hibernate4.x中是这种写法
    StandardServiceRegistry sr = new StandardServiceRegistryBuilder()
        .applySettings(cfg.getProperties()).build();
    SessionFactory sf2 = cfg.buildSessionFactory(sr);
    
    //在hibernate5.x中是这种写法,不需要自己创建Configuration()对象
    StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
        .configure.build();
    SessionFactory sessionFactory = new MetadataSources(serviceRegistry).buildMetadata()
        .buildSessionFactory();
}

 


三、Session

Session接口对于Hibernate开发人员来说是一个最重要的接口。在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中非常重要,因为在程序中,可能会不断地创建以及销毁Session对象,如果Session的开销太大,会给系统带来不良影响。但是Session对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。Session可以看作介于数据库连接与事务管理一种中间接口。我们可以将Session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为Session负责执行被持久化对象的增、删、改、查操作,类似于JDBC的Connection和Statement,诸如存储持久对象至数据库,以及从数据库中获得它们。需要注意的是,Hibernate的Session不同于JSP应用中的HttpSession。在Hibernate中,我们使用Session这个术语时,指的是Hibernate自己的Session。

  @Test
    public void testSession(){
    //在hibernate5.x中是这种写法,不需要自己创建Configuration()对象
        StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
            .configure().build();
        SessionFactory sessionFactory = new MetadataSources(serviceRegistry).buildMetadata()
            .buildSessionFactory();
        
        //通过SessionFactory得到Session
        Session session = sessionFactory.openSession();
}

 

四、Transaction

负责事务相关的操作,它代表的是Hibernate事务,本质上也就是数据库事务。一般在Hibernate的增删改中出现,但是使用Hibernate一般使用Spring去管理事务。

 @Test
    public void testTransaction(){
        //在hibernate5.x中是这种写法,不需要自己创建Configuration()对象
        StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
            .configure.build();
        SessionFactory sessionFactory = new MetadataSources(serviceRegistry).buildMetadata()
            .buildSessionFactory();
        
        //通过SessionFactory得到Session
        Session session = sessionFactory.openSession();
        //第一种写法,创建对象并直接开启事务
        Transaction tx1 = session.beginTransaction();
        //第二种写法,只是创建对象而已,需要调用begin()开启事务
        Transaction tx2 = session.getTransaction();
        tx2.begin();
}

 

五、Query

负责执行各种数值查询功能,它可以使用Hibernate特有的HQL语言和SQL语言两种方式。

标签:HIbernate,Session,cfg,接口,SessionFactory,Hibernate,new,五大,Configuration
来源: https://www.cnblogs.com/mhy123/p/16218114.html