成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java 開發中,你真的了解這些對象的差異與用途嗎?

開發 前端
為了保持軟件工程的清晰結構和部件功能的明確性,以及為了軟件的可擴展性、可移植性和可維護性,建議將這些不同類型的對象分別放置在不同的包中,避免混淆。雖然這樣做可能會增加初始開發的工作量,但從長遠來看,它有助于維護和擴展軟件系統。

1. JavaBean

依據維基百科的闡述,JavaBean 通常是具備以下三種特性的公共 Java 類:

  • 擁有無參構造方法(默認構造方法)。
  • 所有屬性均為 private,外部需通過 public 的 getter 和 setter 方法訪問屬性。
  • 實現 Serializable 接口。

JavaBeans 規范指出,它是一種可在開發工具中可視化編輯的可重用軟件組件,包含一系列屬性與可能的事件。規范第 7 章規定其屬性應為 private,外部通過 public 的 getter 和 setter 訪問;第 2 章規定需可序列化以便傳輸和持久化狀態,但未要求必須有無參構造方法。該規范于 1997 年發布,主要圍繞 Java Applet 設計,其 GUI 組件有屬性和事件且需可序列化,但在純服務器端開發中,部分對象不適用此定義,如數據庫連接或業務邏輯對象可能無需在電腦間傳輸,至少不適用可序列化特性。

2. EJB

EJB 是企業級 JavaBeans(Enterprise JavaBeans)的縮寫。根據 EJB 規范,企業級 Bean 具有以下特性:

  • 通常包含操作企業數據的業務邏輯。
  • 由容器在運行時管理。
  • 用戶需通過容器訪問。
  • 能在部署時根據運行環境定制。
  • 可通過注解或 XML 在編譯或部署時指定配置信息(可配置)。
  • 僅使用 EJB 規范規定服務的企業級 Bean 可在任意 EJB 容器中使用(可移植)。
  • 企業級 Bean 無需重新編譯即可封裝在企業應用中。

此外,企業級 Bean 可以是有狀態或無狀態的,能實現業務邏輯或代表持久化實體,與 JavaBean 有較大區別,不一定是 JavaBean,也不一定有無參構造方法和實現 Serializable 接口。同時,規范雖未規定屬性必須為 private 及通過 public 的 getter 和 setter 訪問,但基于類的封裝性和降低耦合考慮,通常會遵循此設計。

3. Spring Bean

根據 Spring Framework 官方文檔,在 Spring 中由 Spring IoC 容器管理且構成應用主干的對象即為 bean(IoC 是控制反轉 Inverse of Control 的縮寫)。Spring beans 由 Spring IoC 容器依據 XML 配置文件或注解等方式進行實例化、組裝和管理。它與 EJB 類似,通常包括數據庫連接、事務管理器等,區別在于 Spring beans 由 Spring IoC 容器管理,而 EJB 由 EJB 容器管理,且 Spring beans 同樣不一定有無參構造方法和實現 Serializable 接口。

4. POJO

POJO 是簡單的傳統 Java 對象(Plain Old Java Object)的縮寫,也有其他類似說法,由 Martin Fowler 等人提出。結合 Spring 文檔,POJO 是盡量不依賴第三方庫、框架及 JavaEE 規范實現的 Java 對象,應盡量不繼承類、不實現接口、不包含相關注解。它與 JavaBeans、EJB 和 Spring beans 無必然聯系,具有更高的可維護性和可移植性,開發人員可靈活選擇應用場景,不受第三方庫或框架升級影響。

5. BO

BO 是業務對象(Business Object)的縮寫,用于描述業務邏輯中的對象且不依賴具體實現。其屬性應與業務相關人員理解一致,例如用戶信息類中的字段命名應符合業務人員認知。同時,一些特定情況下的對象不屬于 BO,如處理多對多關系的中間對象。通常 BO 在需求或設計中出現,很少單獨編寫純粹的 BO 類,多作為其他對象的基類或組成部分。

6. DTO

DTO 是數據傳輸對象(Data Transfer Object)的縮寫,通常是 JavaBean(滿足無參構造方法、private 屬性及對應 getter/setter、實現 Serializable 接口),也通常是 POJO,以確保在交互系統間的可移植性。

7. PO

PO 是持久化對象(Persistent Object)的縮寫,與數據庫表及行對應,通常是 JavaBean,也可能包含 JPA 規范中的注解。在架構設計中,PO 與 DTO 等對象應區分開,因為數據庫對象有一些特定字段不應暴露給用戶或其他系統。在 Hibernate 中,PO 有持久化對象狀態、值對象狀態和游離狀態三種狀態,其狀態轉換與 Hibernate session 的操作相關。

8. VO

VO 有值對象(Value Object)和展現層對象(View Object)兩種含義。在 Hibernate 中,值對象是廣義 PO 的一種狀態,除持久化和游離狀態的廣義 PO 外都是值對象;從另一定義看,用于存儲數據的對象如 PO 和 DTO 也可稱為值對象。展現層對象對應客戶端頁面或組件中的數據,與 DTO 結構相似,用于業務邏輯層和客戶端頁面間傳輸數據,二者是否合并可參考相關博文討論。

9. DO

DO 表示數據對象(Data Object)。阿里巴巴《Java 開發手冊》中的 DO 等同于 PO(一個 DO 類與一個數據庫表對應,一個 DO 與數據庫表中的一行對應))。

10. DAO

DAO 是數據訪問對象(Data Access Object)的縮寫,封裝數據庫實現細節并抽象訪問方法,通常依賴注入容器注入數據庫連接對象等,所以通常是 EJB 或 Spring bean。

11. 總結

為了保持軟件工程的清晰結構和部件功能的明確性,以及為了軟件的可擴展性、可移植性和可維護性,建議將這些不同類型的對象分別放置在不同的包中,避免混淆。雖然這樣做可能會增加初始開發的工作量,但從長遠來看,它有助于維護和擴展軟件系統。

責任編輯:武曉燕 來源: 程序猿技術充電站
相關推薦

2021-11-26 08:07:16

MySQL SQL 語句數據庫

2018-12-21 11:24:55

Java時間處理編程語言

2023-11-01 13:48:00

反射java

2022-07-26 00:00:22

HTAP系統數據庫

2014-04-17 16:42:03

DevOps

2021-01-07 05:40:13

BLE模塊Android

2025-01-03 08:09:15

2022-01-17 07:32:34

Java參數方法

2021-01-15 07:44:21

SQL注入攻擊黑客

2021-11-09 09:48:13

Logging python模塊

2014-11-28 10:31:07

Hybrid APP

2023-03-16 10:49:55

2020-02-27 10:49:26

HTTPS網絡協議TCP

2019-09-16 08:40:42

2023-05-10 11:07:18

2023-04-28 07:49:13

Javawaitsleep

2018-04-27 15:30:53

Java三目運算符

2023-12-07 08:13:58

Java開發

2023-06-13 13:52:00

Java 7線程池

2023-07-26 07:41:53

Python線程狀態
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91视频在线看 | 亚洲第一色av | 日韩成人在线观看 | 久久丝袜视频 | 日韩av.com| 国产精品久久久久久久粉嫩 | 国产高清在线观看 | 91精品国产乱码久久久久久久久 | 亚洲精品无人区 | 国产九九九九 | 欧美久久久久久 | 日韩成人专区 | 国产精品久久九九 | 一区二区三区小视频 | 中文字幕在线观看一区二区 | 国产精品亚洲一区二区三区在线 | 午夜久久久久久久久久一区二区 | 天天综合久久 | 亚洲国产成人av好男人在线观看 | 在线黄色网 | 天天视频成人 | 99免费视频| 黄篇网址 | 欧美黄色录像 | 久久久久久免费观看 | 国产精品s色 | 成人国产精品久久久 | 亚洲不卡视频 | 国产在线精品一区 | 日韩在线小视频 | 免费看黄色片 | 在线观看视频一区 | 午夜精品视频 | 成人精品福利 | 波多野结衣在线观看一区二区三区 | 欧美在线视频一区 | 欧美激情五月 | 亚洲国产成人精品久久久国产成人一区 | 午夜一区二区三区在线观看 | 请别相信他免费喜剧电影在线观看 | 午夜ww |