Hibernate 工作流程及原理 Hibernate 是一个开放源代码的对象关系映射框架(ORM),它对JDBC 进行了非常轻量级的对象封装,使得Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate 可以应用在任何使用JDBC 的场合,既可以在Java 的客户端程序使用,也可以在Servlet/JSP 的Web 应用中使用,最具革命意义的是,Hibernate 可以在应用EJB 的J2EE架构中取代CMP,完成数据持久化的重任。 Hibernate 的核心接口一共有5 个,分别为:Session、SessionFactory、Transaction、Query 和 Configuration。这 5 个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。 ·Session 接口:Session 接口负责执行被持久化对象的CRUD 操作 (CRUD 的任务是完成与数据库的交流,包含了很多常见的SQL 语句。)。但需要注意的是Session 对象是非线程安全的。同时,Hibernate 的 session 不同于 JSP 应用中的HttpSession。这里当使用session 这个术语时,其实指的是Hibernate 中的session,而以后会将 HttpSesion 对象称为用户session。 ·SessionFactory 接口:SessionFactory 接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建 Session 对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory 就够,当需要操作多个数据库时,可以为每个数据库指定一个 SessionFactory。 ·Configuration 接口:Configuration 接口负 责 配 置 并 启 动 Hibernate ,创 建SessionFactory 对象。在Hibernate 的启动的过程中,Configuration 类的实例首先定位映射文档位置、读取配置,然后创建 SessionFactory 对象。 ·Transaction 接口:Transaction 接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。 ·Query 和 Criteria 接口:Query 和 Criteria 接口负责执行各种数据库查询。它可以使用HQL 语言或 SQL 语句两种表达方式。 Hibernate 主键介绍 Assigned Assigned 方式由程序生成主键值,并且要在save()之前指定否则会抛出异常 特点:主键的生成值完全由用户决定,与底层数据库无关。用户需要维护主键值,在调用session.save()之前要指定主键值。 Hilo Hilo 使用高低位算法生成主...