Hibernate
介绍
ORM框架(Object/Relational Mapping)
对象关系映射,因此Hibernate会在Java对象和关系数据库之间建立某种映射,以达到存取Java对象的目的,实实现持久化存储(将内存中的数据存储在关系型的数据库、磁盘文件、XML数据文件中等等)的一种解决方案
基本APIs
SessionFactory(org.hibernate.SessionFactory)
对于单个数据库映射关系经过编译后的内存缓存,它是线程安全且不可变的。是 Session 生成的工厂实例,也是 ConnectionProvider 的一个客户端(会用到 ConnectionProvider)。它在进程或集群的级别上,为那些在事务之前可重复使用的数据提供了选择性的二级缓存。Session(org.hibernate.Session)
提供应用程序和持久化存储介质之间的一个单线程的会话对象,此对象生存期很短。它隐藏了 JDBC 连接,也是 Transaction 的工厂实例。对于应用的持久化对象及其集合,它提供了一个一级缓存;当遍历导航对象图或者根据持久化标识查找对象时,会用到这个一级缓存。持久化的对象及其集合
具有持久化状态和业务功能的单线程对象,同样生存期很短。这些对象可能是普通的 JavaBeans/POJOs(Plain Ordinary Java Object),它们只能与一个 Session 相关联。一旦 Session 被关闭,它们就会脱离持久化状态,并且可以被应用程序的任何层使用(比如跟表示层打交道的 data transfer objects)瞬态(transient)、托管 状态(detached)的对象及其集合
持久化的类目前没有和 Session 相关联的实例。他们可能是因为在被应用实例化后还没有被持久化,也可能是由于实例化它们的 Session 对象已经被关闭,从而脱离了持久化状态。事物(org.hibernate.Transaction)
(可选的)它是应用程序用来指定原子操作单元范围的对象,是一个单线程的、短生存周期的对象。它通过抽象把应用从底层的 JDBC、JTA 以及 CORBA 事务中隔离开。在某些情况下,一个 Session 可能涵盖多个 Transactions 对象。尽管使用该对象是可选的,但事务的划分(无论是使用底层的 API 还是使用 Transaction 对象)都是不可选的。ConnectionProvider(org.hibernate.connection.ConnectionProvider)
(可选的)它是应用程序用来指定原子操作单元范围的对象,是一个单线程的、短生存周期的对象。它通过抽象把应用从底层的 JDBC、JTA 以及 CORBA 事务中隔离开。在某些情况下,一个 Session 可能涵盖多个 Transactions 对象。尽管使用该对象是可选的,但事务的划分(无论是使用底层的 API 还是使用 Transaction 对象)都是不可选的。TransactionFactory(org.hibernate.TransactionFactory)
(可选的)它是应用程序用来指定原子操作单元范围的对象,是一个单线程的、短生存周期的对象。它通过抽象把应用从底层的 JDBC、JTA 以及 CORBA 事务中隔离开。在某些情况下,一个 Session 可能涵盖多个 Transactions 对象。尽管使用该对象是可选的,但事务的划分(无论是使用底层的 API 还是使用 Transaction 对象)都是不可选的。扩展接口(Extension Interfaces)
Hibernate 提供了很多可选的扩展接口,你可以通过实现它们来定制你的持久层的行为。