根据网上的相关资料和自己的理解,整理了一下Hibernate的主要接口。
1.Configuration
它位于org.hibernate.cfg.Configuration,好像是,呵呵。Configuration对象负责Hibernate的配置与启动,可以通过它来创建SessionFactory。
获得Configuration实例对象的方法:
(1)Configuration cfg = new Configuration().configure(),如果没有.configure()默认获得的是hibernate.properties,
(2)Configuration cfg = factory.getConfiguration()通过SessionFactory来获得创建它的Configuration。
2.SessionFactory
获得SessionFactory的方法。 factory = cfg.buildSessionFactory()
它的特点是:
(1)SessionFactory是线程安全的,可以被多个应用程序所共享使用。
(2)SessionFactory是重量级的,不要轻易地创建和销毁它的实例,因为会消耗大量的内存资源。
SessionFactory一旦被生成,它的配置信息就不会改变,即使生成它的Configuration发生改变他也不会变化。
3.Session
它是由SessionFactory来创建的,session = factory.openSession()
它的特点是:
(1)Sesion不是线程安全的,所以在软件构架的时候应该尽量避免多一个程序共享一个Session
(2)Session是轻量级的,创建和销毁不需要耗掉很多的资源。
Session创建查询对象、开启事务的方法:
session.createQuery(),session.beginTransaction()
Session是一个持久化对象管理器,它的管理方法有:
isOpen(),flush(),close(),evict(),clear()
获得持久化对象的方法:
get(),load(),两者的区别是当数据库中不存在对应数据室 ,get方法会得到一个null对象,而load会抛出一个异常。
对持久化对象的处理方法:
Session.save(),update,delete()
Session缓存的三大作用:
(1)可以减少访问数据库的次数
(2)可以保证缓存中的数据与数据库中的数据同步
(3)当缓存中的持久化对象存在循环关系时,Session会保证不出现访问对象的死循环,以及由死循环引起的JVM堆栈溢出异
Hibernate应用中Java对象的状态
对于需要持久化的Java对象,在它的生命周期中,可处于以下三种状态:
1 临时状态(transient):刚刚被new语句创建,还没有被持久化,不处于Session的缓存中。处于临时状态的Java对象被称为临时对象。
2 持久化状态(persistent):已被持久化,加入到Session的缓存中。处于持久化状态的Java对象称为持久化对象。
3 游离状态(detached):已被持久化,但不再处于Session的缓存中。处于游离状态的Java对象被称为游离对象。
四、Query和Criteria接口
Query和Criteria接口是Hibernate的查询接口,用于向数据库查询对象,以有控制执行查询的过程。
Query实例包装了一个HQL(Hibernate Query Language)查询语句,HQL和SQL查询语句有些相似,便HQL查询语句是面向对象的,它引用类名及类的属性名,而不是表名及表的字段名。
Criteria接口完全封装了基于字符串形式的查询语句,比Query接口更加面向对象。Criteria接口擅长于执行动态查询。
复杂查询用QBC检索方式。QBC检索方式主要由Criteria接口、Criterion接口和Expression、Restrictions类组成。
五、Transaction接口
Transaction接口是Hibernate的数据库事务接口,它对底层的事务接口做了封装,底层事务接口包括:
JDBC API
JTA (Java Transaction API)
CORBA (Common Object Requet Broker Architecture) API
Hibernate应用可通过一致的Transaction接口来声明事务边界,这有助于在不同的环境或容器中移植。
1.Configuration
它位于org.hibernate.cfg.Configuration,好像是,呵呵。Configuration对象负责Hibernate的配置与启动,可以通过它来创建SessionFactory。
获得Configuration实例对象的方法:
(1)Configuration cfg = new Configuration().configure(),如果没有.configure()默认获得的是hibernate.properties,
(2)Configuration cfg = factory.getConfiguration()通过SessionFactory来获得创建它的Configuration。
2.SessionFactory
获得SessionFactory的方法。 factory = cfg.buildSessionFactory()
它的特点是:
(1)SessionFactory是线程安全的,可以被多个应用程序所共享使用。
(2)SessionFactory是重量级的,不要轻易地创建和销毁它的实例,因为会消耗大量的内存资源。
SessionFactory一旦被生成,它的配置信息就不会改变,即使生成它的Configuration发生改变他也不会变化。
3.Session
它是由SessionFactory来创建的,session = factory.openSession()
它的特点是:
(1)Sesion不是线程安全的,所以在软件构架的时候应该尽量避免多一个程序共享一个Session
(2)Session是轻量级的,创建和销毁不需要耗掉很多的资源。
Session创建查询对象、开启事务的方法:
session.createQuery(),session.beginTransaction()
Session是一个持久化对象管理器,它的管理方法有:
isOpen(),flush(),close(),evict(),clear()
获得持久化对象的方法:
get(),load(),两者的区别是当数据库中不存在对应数据室 ,get方法会得到一个null对象,而load会抛出一个异常。
对持久化对象的处理方法:
Session.save(),update,delete()
Session缓存的三大作用:
(1)可以减少访问数据库的次数
(2)可以保证缓存中的数据与数据库中的数据同步
(3)当缓存中的持久化对象存在循环关系时,Session会保证不出现访问对象的死循环,以及由死循环引起的JVM堆栈溢出异
Hibernate应用中Java对象的状态
对于需要持久化的Java对象,在它的生命周期中,可处于以下三种状态:
1 临时状态(transient):刚刚被new语句创建,还没有被持久化,不处于Session的缓存中。处于临时状态的Java对象被称为临时对象。
2 持久化状态(persistent):已被持久化,加入到Session的缓存中。处于持久化状态的Java对象称为持久化对象。
3 游离状态(detached):已被持久化,但不再处于Session的缓存中。处于游离状态的Java对象被称为游离对象。
四、Query和Criteria接口
Query和Criteria接口是Hibernate的查询接口,用于向数据库查询对象,以有控制执行查询的过程。
Query实例包装了一个HQL(Hibernate Query Language)查询语句,HQL和SQL查询语句有些相似,便HQL查询语句是面向对象的,它引用类名及类的属性名,而不是表名及表的字段名。
Criteria接口完全封装了基于字符串形式的查询语句,比Query接口更加面向对象。Criteria接口擅长于执行动态查询。
复杂查询用QBC检索方式。QBC检索方式主要由Criteria接口、Criterion接口和Expression、Restrictions类组成。
五、Transaction接口
Transaction接口是Hibernate的数据库事务接口,它对底层的事务接口做了封装,底层事务接口包括:
JDBC API
JTA (Java Transaction API)
CORBA (Common Object Requet Broker Architecture) API
Hibernate应用可通过一致的Transaction接口来声明事务边界,这有助于在不同的环境或容器中移植。