博客
关于我
pojo.vo.po.domain区别
阅读量:177 次
发布时间:2019-02-28

本文共 2534 字,大约阅读时间需要 8 分钟。

在Web开发的学习过程中,面对POJO、VO、PO、FormBean等概念,很多开发者都会感到困惑。这些术语看似复杂,但实际上它们在软件开发中扮演着重要的角色。以下是一些基本概念的解释和它们之间的关系,希望能帮助开发者更好地理解这些概念。

POJO(Plain Old Java Object,纯老式Java对象)是Martin Fowler等人提出的一个概念,指的是一个普通的Java对象,它不属于JavaBean、EntityBean或SessionBean等特殊的Java框架类或接口。POJO不具备任何特殊的角色,也不需要实现任何特定的Java框架接口,比如EJB、JDBC等。它只是一个普通的Java对象,用于封装业务逻辑或持久化逻辑。

VO(Value Object,值对象)则是用于表示用户提交的数据,比如表单数据。VO类通常由提交的数据构成,专门用于存储用户提供的信息。值对象的一个重要特点是,它可以由多个PO(类似于POJO)组成。值对象在数据传输和业务逻辑处理中起着重要作用。

PO(Persistent Object,持久化对象)则是Hibernate中的核心概念。PO对象代表了与数据库中某条记录相对应的实体。它的状态管理是Hibernate的重要功能之一。PO对象在持久化过程中会被保存到数据库,并在事务提交时反映到数据库中。与VO不同,PO对象的生命周期受到数据库连接的限制,一旦连接断开,PO对象会被销毁。

FormBean(表单封装对象)则是用于将HTML表单数据封装到一个Java对象中,主要目的是弱化对Request对象的依赖。FormBean的作用是将请求中的数据以属性形式存取,从而简化数据的处理流程。它通常用于处理用户提交的表单数据。

VO和PO在结构上看起来没有什么区别,但本质上它们是完全不同的。VO对象是由业务逻辑使用的,它的主要目的是为数据提供存储空间。而PO对象则是用来表示数据库中的实体记录,它的生命周期与数据库连接紧密相关。一旦数据库连接断开,PO对象会被销毁。

在Hibernate中,PO对象的状态管理非常重要。一个PO对象可以处于三种状态:

  • 未被持久化的状态,此时它只是一个内存对象,由JVM管理生命周期。
  • 已经被持久化的状态,并且在Session生命周期内,此时它与数据库连接相关联。
  • 脱离Session后仍然保持持久化状态的状态,此时它可以进入另一个Session继续使用。
  • 需要注意的是,PO对象最好只在持久化层使用。如果将PO对象脱离持久化层到其他地方使用,会给Hibernate带来额外的对象维护开销。

    值对象(VO)和持久化对象(PO)在结构上没有明显的区别,但它们的本质完全不同。VO对象是由业务逻辑使用的,它的存活目的是为了为数据提供存储空间。而PO对象则是用来表示数据库中实体记录的,它的存在依赖于数据库连接。

    值对象的属性通常根据具体的业务需求来定义,而持久化对象的属性则与数据库表的字段一一对应。持久化对象需要实现序列化接口,以确保在传输过程中能够被正确处理。

    此外,Domain(领域)在Java开发中有多种含义。它可以表示一个变量的有效作用域,也可以用来定义一个包,将相关的DAO类文件组织在一起。Domain还可以用作一个范围或界限的表示。

    在Hibernate中,核心的概念是对PO对象的状态管理。一个PO对象可以处于三种状态:

  • 未被持久化的状态,此时它只是一个内存对象,由JVM管理生命周期。
  • 已经被持久化的状态,并且在Session生命周期内,此时它与数据库连接相关联。
  • 脱离Session后仍然保持持久化状态的状态,此时它可以进入另一个Session继续使用。
  • 需要注意的是,PO对象最好只在持久化层使用。如果将PO对象脱离持久化层到其他地方使用,会给Hibernate带来额外的对象维护开销。

    DAO(Data Access Object,数据访问对象)是后台实现业务逻辑的Java类。DAO类通常负责与数据库进行交互,执行CRUD操作。DAO类的设计遵循单一责任原则,一个DAO类通常只处理一个特定的数据访问逻辑。

    DTO(Data Transfer Object,数据传输对象)则是专门用于数据传输的自定义数据类型。DTO类通常包含多个属性以及对应的get/set方法,用于在不同系统之间传输数据。DTO类不需要与数据库进行交互,它的主要目的是将数据从一个系统传输到另一个系统。

    在Hibernate中,核心的概念是对PO对象的状态管理。一个PO对象可以处于三种状态:

  • 未被持久化的状态,此时它只是一个内存对象,由JVM管理生命周期。
  • 已经被持久化的状态,并且在Session生命周期内,此时它与数据库连接相关联。
  • 脱离Session后仍然保持持久化状态的状态,此时它可以进入另一个Session继续使用。
  • 需要注意的是,PO对象最好只在持久化层使用。如果将PO对象脱离持久化层到其他地方使用,会给Hibernate带来额外的对象维护开销。

    在Hibernate中,核心的概念是对PO对象的状态管理。一个PO对象可以处于三种状态:

  • 未被持久化的状态,此时它只是一个内存对象,由JVM管理生命周期。
  • 已经被持久化的状态,并且在Session生命周期内,此时它与数据库连接相关联。
  • 脱离Session后仍然保持持久化状态的状态,此时它可以进入另一个Session继续使用。
  • 需要注意的是,PO对象最好只在持久化层使用。如果将PO对象脱离持久化层到其他地方使用,会给Hibernate带来额外的对象维护开销。

    在Hibernate中,核心的概念是对PO对象的状态管理。一个PO对象可以处于三种状态:

  • 未被持久化的状态,此时它只是一个内存对象,由JVM管理生命周期。
  • 已经被持久化的状态,并且在Session生命周期内,此时它与数据库连接相关联。
  • 脱离Session后仍然保持持久化状态的状态,此时它可以进入另一个Session继续使用。
  • 需要注意的是,PO对象最好只在持久化层使用。如果将PO对象脱离持久化层到其他地方使用,会给Hibernate带来额外的对象维护开销。

    转载地址:http://jiyj.baihongyu.com/

    你可能感兴趣的文章
    Mysql order by与limit混用陷阱
    查看>>
    Mysql order by与limit混用陷阱
    查看>>
    mysql order by多个字段排序
    查看>>
    MySQL Order By实现原理分析和Filesort优化
    查看>>
    mysql problems
    查看>>
    mysql replace first,MySQL中处理各种重复的一些方法
    查看>>
    MySQL replace函数替换字符串语句的用法(mysql字符串替换)
    查看>>
    mysql replace用法
    查看>>
    Mysql Row_Format 参数讲解
    查看>>
    mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
    查看>>
    MySQL Server 5.5安装记录
    查看>>
    mysql server has gone away
    查看>>
    mysql slave 停了_slave 停止。求解决方法
    查看>>
    MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
    查看>>
    MYSQL sql语句针对数据记录时间范围查询的效率对比
    查看>>
    mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
    查看>>
    mysql Timestamp时间隔了8小时
    查看>>
    Mysql tinyint(1)与tinyint(4)的区别
    查看>>
    mysql union orderby 无效
    查看>>
    mysql v$session_Oracle 进程查看v$session
    查看>>