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