博客
关于我
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,sql文件导入和导出
    查看>>
    MYSQL:int类型升级到bigint,对PHP开发语言影响
    查看>>
    Mysql:mysql 5.X 报错 ERROR 1193 (HY000): Unknown system variable ‘validate_password_length‘
    查看>>
    MySQL:MySQL执行一条SQL查询语句的执行过程
    查看>>
    Mysql:SQL性能分析
    查看>>
    mysql:SQL按时间查询方法总结
    查看>>
    MySQL:什么样的字段适合加索引?什么样的字段不适合加索引
    查看>>
    MySQL:判断逗号分隔的字符串中是否包含某个字符串
    查看>>
    MySQL:某个ip连接mysql失败次数过多,导致ip锁定
    查看>>
    MySQL:索引失效场景总结
    查看>>
    Mysql:避免重复的插入数据方法汇总
    查看>>
    MyS中的IF
    查看>>
    M_Map工具箱简介及地理图形绘制
    查看>>
    m_Orchestrate learning system---二十二、html代码如何变的容易
    查看>>
    M×N 形状 numpy.ndarray 的滑动窗口
    查看>>
    m个苹果放入n个盘子问题
    查看>>
    n = 3 , while n , continue
    查看>>
    n 叉树后序遍历转换为链表问题的深入探讨
    查看>>
    N!
    查看>>
    N-Gram的基本原理
    查看>>