博客
关于我
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 /*! 50100 ... */ 条件编译
    查看>>
    mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
    查看>>
    mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
    查看>>
    mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
    查看>>
    mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
    查看>>
    MySQL 8.0 恢复孤立文件每表ibd文件
    查看>>
    MySQL 8.0开始Group by不再排序
    查看>>
    mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
    查看>>
    multi swiper bug solution
    查看>>
    MySQL Binlog 日志监听与 Spring 集成实战
    查看>>
    MySQL binlog三种模式
    查看>>
    multi-angle cosine and sines
    查看>>
    Mysql Can't connect to MySQL server
    查看>>
    mysql case when 乱码_Mysql CASE WHEN 用法
    查看>>
    Multicast1
    查看>>
    mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
    查看>>
    MySQL Cluster 7.0.36 发布
    查看>>
    Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
    查看>>
    MySQL Cluster与MGR集群实战
    查看>>