zoukankan      html  css  js  c++  java
  • 解析Hibernate中的持久化—ORM(转载)

    最近一直在学习Hibernate,首先说一下Hibernate出现的原因吧,Hibernate是因为MVC的分层体系结构的出现,即数据持久层(模型层)的出现,持久层是在MVC三层架构的基础上提出来的,在提出持久层之前,业务逻辑层在实现业务逻辑的同时,还需要访问数据库,这样就为业务逻辑的扩展怎家了难度,有了持久层,业务逻辑层只需要负责业务逻辑的实现,对数据的交给持久层,使每一段业务逻辑代码的目的都更明确,这样操作就更简单了。

           如下图:增加了持久层的MVC分层结构

        

           Hibernate作为一个中间件,很好的实现了持久层的功能,其中就是使用了ORM(对象到关系的映射),Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

           

          何谓“持久化”持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。持久化顾名思义就是把缓存中的东西放到数据库中使之持久

           对于需要持久化的对象,它的生命周期分为三个状态:临时状态,持久化状态,游离状态.

           临时状态(Transient):刚刚用new语句创建,没有被持久化,不处于session的缓存中.处于临时状态的java对象被称为临时对象.

           持久化状态(Persistent):已经被持久化,加入到session的缓存中.处于持久化的java对象被称为持久化对象.

           游离状态(Detached):已经被持久化,但不处于session的缓存中,处于游离状态的java对象被成为游离对象.

    持久化对象的特征:

           .  位于一个session事例的缓存中,可以说持久化对象总是被一个session事例关联

           .  持久化对象和数据库中的相关记录对应

           .  Session在清理缓存时,会根据持久化对象的属性变化来同步更新数据库

           .  Session的save()方法把临时状态变为持久化状态.

           .  Session的update() ,saveOrUpdate()和lock()方法使游离状态变为持久化状态.

           ORM模式

           ORM是实现持久化的技术之一,ORM—Object-Relational Mapping对象到关系的映射,通过使用描述对象和数据库之间的元数据,将Java程序中的对象自动持久化到关系数据库中。

           对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据库无法直接表达多对多关联和继承关系。因此,ORM一般以中间件的形式存在,主要实现程序对象到关系数据库的映射,ORM中间件能在任何一个Java程序的业务逻辑层和数据库层之间充当桥梁。

           ORM的优点:

           1.提高了开发效率。由于ORM可以自动对实体对象与数据库中的表进行字段与属性的映射,所以实际操作中已经不再需要一个专用的、庞大的数据访问层。

           2.ORM提供了对数据库的映射能够像操作对象一样从数据库中获取数据,而不用直接进行SQL编码。

           ORM的缺点

           系统结构方面,采用ORM的系统一般都是多层系统,层次多了效率就会降低。

           2.性能方面,主要体现在对持久化对象的提取和对数据的加工处理上,采用ORM时,系统可能将全部数据提取到内存对象中,然后进行过滤和加工处理,这样会产生性能的问题。

           3.对象持久化方面,ORM一般会持久化所有的属性,这对有些应用是不希望发生的。

           常用的ORM中间件有Hibernate、IBatis、Apache OJB 等等

  • 相关阅读:
    Understanding about Baire Category Theorem
    Isometric embedding of metric space
    Convergence theorems for measurable functions
    Mindmap for "Principles of boundary element methods"
    Various formulations of Maxwell equations
    Existence and uniqueness theorems for variational problems
    Kernels and image sets for an operator and its dual
    [loj6498]农民
    [luogu3781]切树游戏
    [atAGC051B]Three Coins
  • 原文地址:https://www.cnblogs.com/dancser/p/5246608.html
Copyright © 2011-2022 走看看