看了 Persistence in the Enterprise: A Guide to Persistence Technologies的前面几节,发现对持久的必要性不理解.虽然懂得这样用,但总感觉心里不踏实.就像上次老大问我质量的定义是什么,如果不懂质量怎么去更深层次理解工厂的质量业务.所以发个英雄贴召集大家论述一番.
针对这个持久性是怎么产生的,这个模型的机理是什么,要求是什么,方向是什么讨论一番.谢谢大家支持!

解决方案 »

  1.   

    概念:持久化(persistent)是为了解决关系型数据库和对象型编程语言之间的冲突,持久化可以将记录转化为对象,在对象数据库出现并流行之前,持久化是解决并避免对象型编程操作数据的非对象操作的最好途径。数据的持久化是指将从数据库取出的数据进行封装,放在一个对象里,目的是为了以后的使用更加高效,不必每次都从数据库里取数据。
    解决关系型数据库和对象型编程语言之间的冲突技术有:orm(Object/Relation Mapping,对象关系映射)
    我的理解就是,在业务数据处理中尽量不去操作数据库,在事务提交后才对数据库操作。感觉表达很拙劣,望楼主见谅。
      

  2.   

    发送JMS消息给消息队列,消息队列对于这条消息可以采用persistent和non_persistent的方式来存储在消息队列中,如果是persistent的话,你的 weblogic server即便是被意外终止,那么在重启weblogic之后消息队列中这条消息还存在。
    对于JEE应用来说,持久化一般就是说将用户提交的表单数据存储到数据库中主要原因在于,数据在内存中是会随着应用crash, shutdown而丢失的,而持久化的意义在于将数据储存到文件系统filesystem, 或者数据库database中去,这样你的数据就变成真正的永久性数据了。
      

  3.   

    什么是Java持久化概念?我们来打个比方:
    花果山猴子们的信息作为特定应用领域里的业务数据,有两种表现形式:
    ● 在内存中表现为 Monkey对象。
    ● 在关系数据库中表现为 MONKEYS 表中的记录。
    当 Java程序在内存中创建了一个Monkey对象后,它不可能永久存在。最后它要么从内存中清除,要么被持久化到数据库中。内存 无法永久保存数据,因此必须对Monkey对象进行持久化。否则如果Monkey对象没有被持久化,那么用户在应用程序运行时创建的猴子信息将在应用程序结束运行后随之消失。而一旦Monkey对象被持久化,它就可以在应用程序再次运行时被重新加载到内存,并重新构造出Monkey对象。
    狭义的理解,“Java持久化概念”仅仅指把对象永久保存到数据库中;广义的理解,“Java持久化”包括和数据库相关的各种操作:
    ●保存:把对象永久保存到数据库中。
    ●更新:更新数据库中对象的状态。
    ●删除:从数据库中删除一个对象。
    ●加载:根据特定的 OID (Object  Identifier,对象标识符),把一个对象从数据库加载到内存中。
    ●查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载到内存中。
    确切地说,数据库中存放的是关系数据,而不是对象。但本书常常出现“从数据库中加载对象”、“删除数据库中的对象”,以及“更新数据库中的对象”等说法。这主要是站在Hibernate 的客户程序端的角度来看待数据库访问操作的。Hibernate封装了数据库访问细节,为客户程序提供了面向对象的Java持久化语义。客户程序可以假想数据库中存放的就是对象,只需委托Hibernate 从数据库中加载对象、删除对象,以及更新对象就行了,至于Hibernate 如何把这些对象映射为数据库中的相应关系数据,这就属于Hibernate 的分内之事了。
    不好意思,刚开始一直用英文查找相关内容,可能表述有问题查不到内容。现在有一个说明还可以,发出来大家看看。
      

  4.   

    什么是Java持久化概念?我们来打个比方:
    花果山猴子们的信息作为特定应用领域里的业务数据,有两种表现形式:
    ● 在内存中表现为 Monkey对象。
    ● 在关系数据库中表现为 MONKEYS 表中的记录。
    当 Java程序在内存中创建了一个Monkey对象后,它不可能永久存在。最后它要么从内存中清除,要么被持久化到数据库中。内存 无法永久保存数据,因此必须对Monkey对象进行持久化。否则如果Monkey对象没有被持久化,那么用户在应用程序运行时创建的猴子信息将在应用程序结束运行后随之消失。而一旦Monkey对象被持久化,它就可以在应用程序再次运行时被重新加载到内存,并重新构造出Monkey对象。
    狭义的理解,“Java持久化概念”仅仅指把对象永久保存到数据库中;广义的理解,“Java持久化”包括和数据库相关的各种操作:
    ●保存:把对象永久保存到数据库中。
    ●更新:更新数据库中对象的状态。
    ●删除:从数据库中删除一个对象。
    ●加载:根据特定的 OID (Object  Identifier,对象标识符),把一个对象从数据库加载到内存中。
    ●查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载到内存中。
    确切地说,数据库中存放的是关系数据,而不是对象。但本书常常出现“从数据库中加载对象”、“删除数据库中的对象”,以及“更新数据库中的对象”等说法。这主要是站在Hibernate 的客户程序端的角度来看待数据库访问操作的。Hibernate封装了数据库访问细节,为客户程序提供了面向对象的Java持久化语义。客户程序可以假想数据库中存放的就是对象,只需委托Hibernate 从数据库中加载对象、删除对象,以及更新对象就行了,至于Hibernate 如何把这些对象映射为数据库中的相应关系数据,这就属于Hibernate 的分内之事了。
    不好意思,刚开始一直用英文查找相关内容,可能表述有问题查不到内容。现在有一个说明还可以,发出来大家看看。
      

  5.   

    什么是Java持久化概念?我们来打个比方:
    花果山猴子们的信息作为特定应用领域里的业务数据,有两种表现形式:
    ● 在内存中表现为 Monkey对象。
    ● 在关系数据库中表现为 MONKEYS 表中的记录。
    当 Java程序在内存中创建了一个Monkey对象后,它不可能永久存在。最后它要么从内存中清除,要么被持久化到数据库中。内存 无法永久保存数据,因此必须对Monkey对象进行持久化。否则如果Monkey对象没有被持久化,那么用户在应用程序运行时创建的猴子信息将在应用程序结束运行后随之消失。而一旦Monkey对象被持久化,它就可以在应用程序再次运行时被重新加载到内存,并重新构造出Monkey对象。
    狭义的理解,“Java持久化概念”仅仅指把对象永久保存到数据库中;广义的理解,“Java持久化”包括和数据库相关的各种操作:
    ●保存:把对象永久保存到数据库中。
    ●更新:更新数据库中对象的状态。
    ●删除:从数据库中删除一个对象。
    ●加载:根据特定的 OID (Object  Identifier,对象标识符),把一个对象从数据库加载到内存中。
    ●查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载到内存中。
    确切地说,数据库中存放的是关系数据,而不是对象。但本书常常出现“从数据库中加载对象”、“删除数据库中的对象”,以及“更新数据库中的对象”等说法。这主要是站在Hibernate 的客户程序端的角度来看待数据库访问操作的。Hibernate封装了数据库访问细节,为客户程序提供了面向对象的Java持久化语义。客户程序可以假想数据库中存放的就是对象,只需委托Hibernate 从数据库中加载对象、删除对象,以及更新对象就行了,至于Hibernate 如何把这些对象映射为数据库中的相应关系数据,这就属于Hibernate 的分内之事了。
    不好意思,刚开始一直用英文查找相关内容,可能表述有问题查不到内容。现在有一个说明还可以,发出来大家看看。
      

  6.   

    jxSandy2你描述的是操作层面的理解!按照Persistence的技术产生的原因,是解决程序对象和关系数据库之间的问题,按照 
    Cike121272604的描述,在开发企业应用的时候遇到的问题的一些解决方案,如:
    Persistence in the Enterprise: A Guide to Persistence Technologies书中描述的三个问题,
    即对象空间和数据库关系空间的对应问题How can inheritance be represented in a relational database?
    How do types map from a relational database to the different type system of Java?
    How can it be handled when an object model structure looks nothing like the relational model that its data is stored in?
      

  7.   

    jxSandy2你描述的是操作层面的理解!按照Persistence的技术产生的原因,是解决程序对象和关系数据库之间的问题,按照 
    Cike121272604的描述,在开发企业应用的时候遇到的问题的一些解决方案,如:
    Persistence in the Enterprise: A Guide to Persistence Technologies书中描述的三个问题,
    即对象空间和数据库关系空间的对应问题How can inheritance be represented in a relational database?
    How do types map from a relational database to the different type system of Java?
    How can it be handled when an object model structure looks nothing like the relational model that its data is stored in?