博客
关于我
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 往字段后面加字符串
    查看>>
    mysql 快照读 幻读_innodb当前读 与 快照读 and rr级别是否真正避免了幻读
    查看>>
    MySQL 快速创建千万级测试数据
    查看>>
    mysql 快速自增假数据, 新增假数据,mysql自增假数据
    查看>>
    MySql 手动执行主从备份
    查看>>
    Mysql 批量修改四种方式效率对比(一)
    查看>>
    Mysql 报错 Field 'id' doesn't have a default value
    查看>>
    MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
    查看>>
    Mysql 拼接多个字段作为查询条件查询方法
    查看>>
    mysql 排序id_mysql如何按特定id排序
    查看>>
    Mysql 提示:Communication link failure
    查看>>
    mysql 插入是否成功_PDO mysql:如何知道插入是否成功
    查看>>
    Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
    查看>>
    mysql 数据库中 count(*),count(1),count(列名)区别和效率问题
    查看>>
    mysql 数据库备份及ibdata1的瘦身
    查看>>
    MySQL 数据库备份种类以及常用备份工具汇总
    查看>>
    mysql 数据库存储引擎怎么选择?快来看看性能测试吧
    查看>>
    MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
    查看>>
    MySQL 数据库的高可用性分析
    查看>>
    MySQL 数据库设计总结
    查看>>