Hibernate学习笔记---1.java对象持久化技术

Hibernate是甚么?
 它是连接java应用程序和关系数据库的中间件。
 它对jdbc api进行封装,负责java对象的持久化。
 在分层软件架构中它位于持久化层,封装了所有数据访问细节,使业务逻辑层可以专注于实现业务逻辑。
 它是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射。

软件分层包含2个方面:1。物理分层,即每一次都运行在单独的机器中,这意味着创建分布式的软件系统; 2。逻辑分层,指的是在单个软件模块中完成特定的功能。

软件层的特性:
每个层由一组相关的类或组件(EJB)构成,共同完成特定的功能。
层与层之间存在自上而下的依赖关系,即上层组建会访问下层组建的API,而下层组件不依赖于上层组件。
每个层对上层公开API,但具体的实现细节对外透明。

软件分层的优点:
伸缩性 应用程序是否支持更多用户。层数越少,可以增加资源的地方就越少。
可维护性 当发生需求变化时,只需修改软件的一部分,不会影响其他部分的代码。
可扩展性 指的是在现有系统中增加新功能的难易程度。层数越多,就可以在每个层中提供  扩展点,不会打破应用的整体框架。
可重用性 程序代码没有冗余,同一个程序满足多种需求。
可管理性 管理系统的难易程度,将应用程序分为多层后,可以将工作分给不同的小组。

持久化层封装了数据访问细节,为业务逻辑层提供了面向对象的API。完善的持久化层应该达到以下目标:
 代码可重用性高,能够完成所有的数据库访问操作。
 能够支持多种数据库平台。
 具有相对独立性,当持久化层的实现发生变化,不会影响上层的实现。

关系数据模型:
关系数据模型是在概念模型的基础上建立的,用于描述这些关系的静态结构,它由以下内容组成:一个或者多个表,触发器,表的所有索引,视图,表与表之间的参照完整性。
通常一个实体对应一个表,例如customer实体对应customer表,order实体对应order表。表通过主键来保证每一条记录的唯一性,表的主键应当不具备任何业务含义,因为任何有业务含义的列都有可能发生变化。
对于支持SQL的关系数据库,可以采用SQL DDL语言来创建数据库Schema。SQL DDL用于生成数据库的物理实体。
create table CUSTOMERS{ID bigint not null,
        NAME varchar(15),
        AGE int,
        primary key(ID)};
create table ORDERS{ID bigint not null,
     ORDER_NUMBER varchar(15),
     PRICE double precision,
     CUSTOMER_ID bigint,
     primary key(ID)};
alter table orders add index IDX_CUSTOMER(CUSTOMER_ID);
add constraint PK_CUSTOMER foreign key (CUSTOMER_ID) references CUSTOMERS(ID);

域对象:
 构成域模型的基本元素就是域对象。域对象,即Domain Object,是对真实世界的实体的软件抽象。域对象还可以叫做业务对象,Business Object。域对象可以代表业务领域中的人,地点,事物或者概念。
1。实体域对象
 实体对象可以代表人,地点,事物,概念等。可以把业务领域中的名词客户,订单等称为实体域对象。这些名词可以作为实体EJB或者Java Bean。采用Java Bean形式的实体域对象被称为POJO(Plain Old Java Object)。
 为了使实体域对象与关系数据库表中的记录对应,可以为每一个实体域对象分配一个唯一的OID(Object Identifier对象描述符)。OID是关系数据库中的主键。
2。过程域对象
 过程域对象代表应用中的业务逻辑或流程。他们通常依赖于实体域对象,可以把业务中的动词,例如客户发出订单等作为过程域对象。
3。事件域对象
 代表应用中的一些事件(异常,警告或者超时)。这些事件通常由系统中的某种行为触发。

域对象之间的关系:
1。关联(Association)
 关联指的是类之间的引用关系,分为一对一,一对多,多对多关联。如果类A与类B关联,那么被引用的类B将被定义为类A的一个属性。
2。依赖(Dependency)
 依赖指的是类之间的访问关系。如果类A访问类B的属性或者方法,或者类A负责实例化类B,那么说类A依赖类B。和关联不同,无需把类B定义为类A的属性,依赖关系在实体域中不常见,但是过程域对象往往依赖实体域对象,因为过程域对象会创建实体域对象,或者会访问实体域对象的属性或者方法。
3。聚集(Aggreation)
 聚集指的是整体与部分之间的关系。在实体域中常见。例如人与手之间的聚集。对于聚集关系,部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也随之消失。而对于存在关联关系的两个类,可以允许每个类的对象单独存在。
4。一般化(Generalization)
一般化指的是类之间的继承关系。

域对象的持久化概念:
当实体域对象在内存中创建后,他们不可能永远存在,最后,他们要么从内存中清除,要么被持久化到数据库中。内存无法永久地保存数据,因此必须对实体域对象进行持久化。

  

你可能感兴趣的:(Hibernate学习笔记---1.java对象持久化技术)