首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 對象術語全解析:PO/BO/VO/DTO/POJO/DAO/Entity/JavaBean 的區別與轉換

     編輯:Java 相關知識

術語對照表

縮寫全稱核心定義典型層級
POPersistent Object持久化對象,與數據庫表 1:1 映射 (Hibernate/JPA Entity)DAO/Repository
VOValue Object值對象,不可變,無標識,如 Money、DateRange跨層傳值
VOView Object視圖對象,針對界面聚合數據,如 UserProfileVOController → View
BOBusiness Object業務對象,封裝業務規則/流程,組合 PO/VOService
DTOData Transfer Object數據傳輸對象,層間/進程間傳輸,貧血(僅字段+Getter/Setter)Service ↔ Controller / RPC
POJOPlain Old Java Object純舊 Java 對象,無框架侵入,廣義上包含上述所有通用
DAOData Access Object數據訪問對象,封裝 CRUD,隔離持久化邏輯DAO
Entity實體領域驅動設計核心:擁有唯一標識、生命週期、業務行為Domain
JavaBean—規範:public class、無參構造、私有字段+Getter/Setter、實現 Serializable通用組件

轉換流向


Database ←→ PO (DAO) ←→ BO (Service) ←→ DTO (Controller) ←→ VO (View)
                    ↑
              POJO (基礎形態)

為什麼要分這麼多?

  1. 關注點分離:各層只關心所需數據結構
  2. 安全性:不將持久化模型直接暴露給前端 (避免過度暴露字段、懶加載觸發)
  3. 性能:DTO 精簡字段,減少序列化/網絡開銷
  4. 解耦:數據庫變更只影響 PO/DAO,不波及上層

JavaBean 規範細節

  • 類必須 public
  • 提供 public 無參構造器
  • 屬性 private,暴露 getXxx()/setXxx() (boolean 可用 isXxx())
  • 實現 Serializable (用於分布式傳遞)
  • 支持 BeanInfo / PropertyDescriptor 內省機制

EJB 時代遺留分類 (歷史參考)

  • Session Bean:有狀/無狀會話組件,承載業務邏輯
  • Entity Bean:持久化實體 (現 JPA Entity)
  • Message-Driven Bean:JMS 消費者

現代 Spring 生態中以 POJO + 注解 (@Entity, @Service, @Repository) 替代重量級 EJB。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved