hibernate是连接java应用程序和关系数据库的中间件;对底层jdbc api进行了封装,负责java对象的持久化,正因为对数据细节访问的封装,使业逻辑层可以专注于业务逻辑。
软件体系的三种模型:
一、概念模型:描述每个实体的概念和属性,以及实体之间的关系。较通俗易懂。
二、数据模型:主要表现在关系数据模型,它是在概念模型基础上建立起来的,用于描述关系数据的静态结构。如在关系数据库中中各个表之间的关联。
三、域模型:主要由以下内容组成。
1. 具有状态和行为的域对象。如:
实体域对象POJO(用户,订单),某些实体EJB,javaBean等。
过程域对象:代表应用中的业务逻辑和流程。
事件域对象:代表应用中的一些事件。
2. 域对象之间的关系:
关联:即1:1,1:N,N:N ;
依赖:类之间的访问关系,表现为类之间的属性关系;
聚集:整体与部分之间的关系;它与在联有区别,聚集中部分类的对象不能单独存在,它的生命周期依赖于整体类的对象生命周期,当整体消失,部分也消失。
一般化:体现类之间的继承关系。
实体域对象持久化
1. 直接通通jdbc API来持久化实体域对象:
涉及内容:DriverManager、Connection、Statement、PreparedStaement、ResultSet。
2. ORM:关系对象映射。它采用映射元数据来描述对象关系的映射细节;即面向对象与面向关系之间的基本映射。只要配置了持久化类与表的映射关系,ORM中间件就能参照映射文件的信息,把域对象持久化到数据库中。
实体域对象的其它持久化模式
主动域对象模式:在它的实现中封装了关系数据模型和数据访问的细节,每个实体域对象都负责自身的数据访问实现,会造成编码重复。
JDO模式:SUN定制的标准API,它支持把对象持久化到任意一种存储系统中,包括:关系数据库,面向对象数所库,基于XML数据库,其它存储系统,因此,从某种角度它并不是对象关系映射接口。
CMP模式:由EJB容器来管现实体EJB的持久化,EJB容器封装了对象关系的映射及数据的访问细节。因J2ee规范的影响,实现比较复杂。
Hibernate API
核心接口五个:
Configuration 接口:配置Hibernate,启动Hibernate,创建军SessionFactory对象。
SessionFactory 接口:初始化Hibernate,充当数据存储源代理,创建Session对象;如需访问多个数据库,必须为每个数据库创建单独的SessionFactory实例。它可以配置一个二级缓存插件。
Session 接口:保存、更新、删除、加载、查询对象。它被称为Hibernate的一级缓存。
Transaction :管理事务。它封装了底层的事件接口;如jdbc api,JTA,Corba。它的存在,使得移植性的方便。比较关注数据库事务与并发。
Query 和 Criteria 接口:执行数据库查询。Query包装了一个HQL查询语句,面向对角的查询语名,它引用类名及类的属性名,而不是表名及表的字段名。Criteria接口封装了基于字符串形式的查询语句,比Query更加面向对象,擅长执行动态查询。