`

Hibernate上的主要接口

阅读更多
根据网上的相关资料和自己的理解,整理了一下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接口来声明事务边界,这有助于在不同的环境或容器中移植。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics