B/S 體系結構
image.png
Java EE 經典架構
image.png
Java EE 13規范
JDBC
image.png
JDBC 對象與接口
java.sql.DriverManager:
用于管理JDBC驅動的服務類,當JDBC驅動加載至內存后,DriverManager會自動注冊JDBC驅動,然后通過getConnection方法建立Java應用至DBMS的連接;
java.sql.Connection:
數據庫連接對象,通過createStatement創建SQL聲明;
java.sql.Statement:
SQL語句接口,通過executeQuery或executeUpdate執行一個靜態的SQL語句;
java.sql.ResultSet:SQL語句執行結果對象,包含了若干維護表記錄的操作方法;
java.sql.SQLException:SQL操作期間的異常處理,所以異常均通過該類拋出;
JDBC 連接池
image.png
JNDI
Java Naming and Directory Interface(Java命名和目錄服務接口),是命名目錄服務的抽象接口集合,為企業級應用提供了統一的標準化連接,使Java能無縫獲取任何可目錄化的企業信息。
JNDI包含API與SPI(服務提供接口),JNDI SPI用于命名和目錄服務的設計與實現,使各類數據服務標準化,JNDI API用于快速方便的訪問任何目錄服務。
JNDI由3個包組成:
javax.naming:定義了命名服務的類型,以及所有 存取標準接口;
javax.naming.directory:是javax.naming的擴展,提供了所有對于目錄服務的 訪問標準操作與接口;
javax.naming.spi:定義了命名目錄的服務接口,遵循這些標準接口,開發者能夠為不同數據服務編寫出統一的命名目錄服務;
RMI
定義
基于 TCP/IP 套接字方式的分布式調用,是 Java 開發分布式應用的基礎,簡單來說,就是把接口(Interface)與實現從本地移到了遠程的服務器上,從而實現了接口與實現的分布式調用。
image.png
Servlet
Servlet的定義:
是部署在Java的Web服務器上的組件,整個Java服務端程序都構建在Servlet之上,以多線程方式提供服務,具有效率高,可擴展,可移植的特點;
JSP的定義:
Java Server Page,所有JSP頁面在執行時都會被編譯成Servlet,由JSP頁面生成的Serlvet叫作“JSP頁面實現類”,甚至可以把JSP認為是嵌入了Java語句的HTML頁面文件;
Servlet / JSP的關系:
在頁面展現上,Servlet通過輸出HTML語句來實現動態頁面,如果SUN不推出JSP標準,那么Java的Web頁面開發(動態頁面的交互過程)將會十分痛苦
EJB
整體結構
image.png
從上圖中可以看到,JavaBEAN,RMI與JNDI,在EJB中是基礎,起到關鍵作用;
1、EJB被成功發布后,客戶端通過JNDI獲得對HOME接口的引用;
2、然后通過HOME對象得到EJB對象;
3、最后,客戶端就可以通過EJB對象來調用EJB實例的業務方法
EJB作用示意圖
image.png
EJB包括3種類型的Bean:
會話Bean(Session):用于描述業務處理過程,可以作為其他Bean的客戶端,用來調用其他Bean;
實體Bean(Entity):用于描述數據,提供了持久數據的操作與表示,可同時與多個客戶機進行交互,運行結束后,其狀態仍能保留;有2種類型的實體Bean,CMP與BMP;
消息驅動Bean(Message-Driven):集成了JMS和EJB的功能,不向客戶端開放,只用于系統內部的交互;
JTA
JTA(Java Transaction API),Java事務API,其定義為:
是一組事務接口定義,描述了對于不同資源(包括數據庫,EJB,服務通訊等)的事務處理規范;
需要注意的是:
JTA只提供了接口,并沒有提供實現類,完全需要自行實現;
JTA可以實現同一事務對應不同的資源,但是不能實際事務的嵌套;
JTA的主要組成
javax.transaction.UserTransactoin定義了事務的操作范圍,包括啟動、提交以及回滾;
javax.transaction.xa.XAResource是面對各類資源的事務接口,JTA采用XA接口規范作為自身的資源標準,所以,只要是符合XA的資源,JTA都能夠處理
JMS
JMS(Java Message Service)的定義
提供了一列創建、發送、接收、和讀取企業消息的通用方法;
JMS中的消息通訊都是異步方式的;
JMS可以處理由其他類型客戶端所發消息;
具體JMS應用的組成
客戶端:用來處理消息的應用,分為JMS客戶與非JSM客戶端,區別在于實現的技術有所不同;
消息(Message):在不同應用或組件中進行異常通訊的請求、事件或報告;
JMS Provider:實現了JMS標準的應用服務;
被管理對象:事先配置的JMS對象,由管理員為使用JMS的客戶端所創建
JMS的消息傳遞方式
PTP:點對點方式,以隊列的方式進行消息的處理;
Pub/Sub:發布/訂閱方式,包含了“消息調適器(Topic)”,通過這個調用器來處理消息;
2種方式也可以同時存在一個應用中;
image.png
Java EE 輕量級架構
Mybatis
MyBatis是一個數據持久層(ORM)框架,在實體類和關系數據庫之間建立了sql映射關系,是一種半自動化的ORM實現。
Spring
特點:Ioc/DI(控制反轉/依賴注入)、AOP(面向切面)
Spring 包含并管理 應用對象 的配置和生命周期,在這個意義上它是一種容器,Spring 可以配置bean如何被創建,基于一個可配置原型 (prototype),bean可以創建一個單獨的實例或者每次需要時都生成一個新的實例,以及bean之間是如何相互關聯的。
image.png
image.png
Spring容器了很多服務,但這些服務并不是默認打開的,應用需要某種服務,需要先指明使用該服務,如果應用使用的服務很少,如:只使用了spring核心服務,那么我們可以認為此時應用屬于輕量級的,如果應用使用了spring提供的大部分服務,這時應用就屬于重量級。
EJB容器就因為它默認為應用提供了EJB規范中所有的功能,所以它屬于重量級。
SpringBoot
核心
自動配置:針對很多Spring應用程序常見的應用功能,Spring Boot能自動提供相關配置
起步依賴:告訴Spring Boot需要什么功能,它就能引入需要的庫。
命令行界面:這是Spring Boot的可選特性,借此你只需寫代碼就能完成完整的應用程序,無需傳統項目構建。
Actuator:能夠監控運行中的Spring Boot應用程序
經典架構
image.png
輕量級架構
image.png
輕量級微服務架構
image.png
輕量級前后端分離架構
image.png