Hibernate之hibernate映射基础

java对象持久化概述

为了把数据访问细节和业务逻辑分开,可以把数据访问作为单独的持久化层

Hibernate不和特定的业务领域相关,能够把任意一个java应用于数据库系统连接,可以理解为是一种中间件

概念模型:模拟问题域中的真实实体。描述每个实体的概念和属性及实体间关系。不描述实体行为实体间的关系有一对一,一对多和多对多。

关系数据模型:在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构。

关系数据模型组成部分有:若干表,表的所有索引,试图,触发器,表与表之间的参照完整性。

域模型:在软件的分析阶段创建概念模型,在软件设计阶段创建域模型。

域模型组成部分:具有状态和行为的域对象,域对象之间的关联。

域对象:构成域模型的基本元素就是域对象。对真实世界的实体的软件抽象,也叫做业务对象。

域对象可以代表业务领域中的人,地点,事务或概念。

实体域对象:通常是指业务领域中的名词。(pojo)--映射关系数据库中的表

过程域对象:应用中的业务逻辑或流程。依赖于实体域对象,业务领域中的动词。对pojo操作的方法

事件域对象:应用中的一些事件(警告,异常)

域对象间的关系

1.关联:类间的引用关系。以属性定义的方法表现

  关联可分为一对一,一对多和多对多。还可以分为单项关联和多项关联

2.依赖:类之间的访问关系。无需定义属性。在A中访问B中的方法和属性,或者A负责实例化B.

3.聚集:整体与部分的关系。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,整体消失时,部分也随之消失。

4.一般化:类之间继承关系。

 

域对象的持久化概念

实体域对象在内存中创建后,不能永久保存。将实体域对象永久保存起来就是实体化的过程。

通常只有实体域对象需要持久化,过程域对象和事件域对象一般不需要持久化。

广义持久化指增,删,改,查。

 

ORM:对象/关系映射

ORM实现思想:将关系数据库中表中的记录映射成为对象,一对象的形式展现,程序员可以把对数据库的操作转换为对对象的操作。

因此ORM的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。

ORM采用元数据来描述对象-关系映射细节,元数据通常采用xml格式,并且存放在专门的对象-关系映射文件中

 

Hibernate持久化的访问者有两个。

1.java应用程序,调用Customer对象的getXXX()方法,读取Customer信息,把它输出到用户界面。调用Customer对象的setXXX()

方法,把用户输入的Customer信息写入Customer对象中

2.Hibernate:调用Customer对象的getXXX()方法,读取Customer信息,把它保存到数据库。调用Customer对象的setXXX()

方法,把从数据库读取出的Customer信息写入Customer对象中。

java应用程序不能访问持久化类的private方法,而hibernate没有这个限制,他可以访问各种级别的方法。

 

基本数据类型和包装类的区别:

基本数据类型和包装数据类型对应的hibernate映射类型相同。

基本数据类型可直接运算,无发表达null,数字类型的默认值为0.

包装类型默认值是null。当对于默认值有业务意义的时候需要使用包装类。

 

hibernate访问持久化类属性的策略

1.propertye默认值:表明hibernate通过getXXX和setXXX来访问类属性。推荐使用。提高域模型透明度

2.field:hibernate通过java反射机制直接访问类属性。对于没有javabean方法的属性可设置该访问策略

3.noop:它映射java持久化类中不存在的属性,即主要用于HQL(用query接口测试,使用hql语句)中,当数据库中有某列,而实体中不存在的情况(不需要了解)

 

posted @ 2015-03-24 13:14  HDKing  阅读(157)  评论(0)    收藏  举报