JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #119. รู้เบื้องต้นเกี่ยวกับ Java Enterprise Ed...

คอฟฟี่เบรค #119. รู้เบื้องต้นเกี่ยวกับ Java Enterprise Edition (Java EE)

เผยแพร่ในกลุ่ม
ที่มา: Dev.to Java Enterprise Edition (Java EE) คือชุดข้อกำหนดและเอกสารประกอบสำหรับภาษา Java ที่อธิบายสถาปัตยกรรมแพลตฟอร์มเซิร์ฟเวอร์สำหรับการแก้ปัญหาขององค์กรขนาดกลางและขนาดใหญ่ คอฟฟี่เบรค #118.  รู้เบื้องต้นเกี่ยวกับ Java Enterprise Edition (Java EE) - 1เมื่อเรียนรู้ Java EE คุณจะเจอคำศัพท์ต่อไปนี้:
  • แอปพลิเคชันเซิร์ฟเวอร์เป็นการนำข้อกำหนดเฉพาะ Java EE เชิงนามธรรมไปใช้อย่างเป็นรูปธรรม ตัวอย่าง: เซิร์ฟเวอร์ Payara (Glassfish), IBM OpenLiberty และ JBoss Wildfly

  • Java Specification Request (JSR) เป็นคำขออย่างเป็นทางการไปยังชุมชน Java เพื่อเพิ่มและปรับปรุงเทคโนโลยี เป็นเนื้อหาที่สร้างมาตรฐานให้กับ API บนแพลตฟอร์มเทคโนโลยี Java และใช้เพื่อจัดกลุ่ม API ออกเป็นบล็อก เช่น JAX-RS (Java API สำหรับ RESTful Web Services) สำหรับทุก JSR จะมีการดำเนินการอ้างอิงดีฟอลต์เสมอ

  • การนำไปปฏิบัติอ้างอิงคือการนำไปปฏิบัติ/การนำไปปฏิบัติอย่างเป็นรูปธรรมของ JSR นามธรรม ตัวอย่างเช่น การใช้งานอ้างอิงสำหรับ JAX-RS เรียกว่า Jersey Java EE นั้นเป็น JSR ดังนั้น แอปพลิเคชันเซิร์ฟเวอร์จึงเป็นคอลเล็กชันของการใช้งานอ้างอิง Java EE JSR ที่แตกต่างกัน Java EE คือ JSR 366 และหนึ่งในการใช้งานอ้างอิงคือ Glassfish 5

  • Jakarta EEเป็นชื่อใหม่สำหรับ Java EE ที่เริ่มตั้งแต่ปี 2561 ปัจจุบัน ออราเคิลได้โอนย้ายแพลตฟอร์ม Java ภายใต้การบริหารของEclipse Foundation

พื้นฐาน JavaEE

มี API หลักสามรายการใน Java EE:
  1. Java Persistence API (JPA) มีหน้าที่จัดเก็บและดึงข้อมูลจากฐานข้อมูลเชิงสัมพันธ์ซึ่งสามารถขยายให้ทำงานกับฐานข้อมูล NoSQL ได้ นี่คือชั้นข้อมูลในแอปพลิเคชัน

  2. การฉีดบริบทและการพึ่งพา (CDI API) เป็นวิธีมาตรฐานในการลดการเชื่อมต่อในการใช้งาน โดยจะจัดการการโต้ตอบของส่วนประกอบต่างๆ เพื่อให้แน่ใจว่ามีการแยกส่วนอย่างอิสระ

  3. Java API สำหรับ RESTful Web Services (JAX-RS) ให้บริการทรัพยากรผ่าน HTTP เป็นบริการบนเว็บ

API การฉีดบริบทและการพึ่งพา

การพึ่งพาการฉีดเป็นรูปแบบพิเศษของการควบคุมการผกผัน (กลยุทธ์ซอฟต์แวร์ที่แต่ละส่วนประกอบได้รับการพึ่งพา) สิ่งนี้จะทำให้การพึ่งพาภายนอกในแอปพลิเคชันเพื่อสร้างส่วนประกอบการมีเพศสัมพันธ์ต่ำ

คุณสมบัติของซีดีไอ

  • การพึ่งพาการฉีด (Typesafe)ช่วยให้คุณสามารถประกาศการพึ่งพาประเภทเพื่อให้คอมไพเลอร์จับข้อผิดพลาดขณะรันไทม์

  • บริบทวงจรการใช้งานคือความสามารถในการเชื่อมโยงการโต้ตอบวงจรการใช้งานและส่วนประกอบแบบมีสถานะเข้ากับส่วนประกอบวงจรการใช้งานที่กำหนดไว้อย่างดีแต่สามารถขยายได้

  • Interceptorsช่วยให้คุณสามารถสกัดกั้นคำขอเพื่อเข้าถึงวิธีการเฉพาะได้

  • กิจกรรมเป็นวิธีหนึ่งในการพัฒนาแอปพลิเคชันที่มีการแยกส่วนอย่างมาก เหตุการณ์สามารถถูกยิงได้ในขณะที่เมธอด Observers กำลังฟังเหตุการณ์ที่ยิง

  • Service Provider Interface (SPI)คือชุดของเทคนิค, API และอินเทอร์เฟซที่สามารถใช้เป็นส่วนขยายได้ เช่น ในไลบรารี Apache

แนวคิด CDI API บางประการ:

  • CDI Bean Discoveryเป็นกลไกที่เฟรมเวิร์กการฉีดการขึ้นต่อกันแยกวิเคราะห์และค้นหา bean เพื่อควบคุมวิธีการค้นพบ bean ตามค่าเริ่มต้น นั่นคือ bean ที่มีคำอธิบายประกอบ เช่น @Annotated โหมดการค้นพบ bean มีสามประเภท: ALL (รวมถึง bean ที่ไม่มีคำอธิบายประกอบ), ANNOTATED และ NONE

  • คอนเทนเนอร์ CDIเป็นวิธีการจากโรงงานที่คลาส Java เข้าและออกพร้อมกับฟังก์ชันและความสามารถ นี่คือแอปพลิเคชั่นที่จัดการถั่ว

  • อินสแตนซ์ Bean และบริบท bean คือเทมเพลตที่นักพัฒนาสร้างขึ้น อินสแตนซ์ตามบริบทคืออินสแตนซ์ของ Bean ที่สร้างและจัดการโดยคอนเทนเนอร์ CDI

Java Persistence API

JPA ใช้ในการแมปวัตถุกับตารางฐานข้อมูลเชิงสัมพันธ์ Java Persistence API เป็นไปตามหลักการของ ORM manifesto ORM Manifest (รายการการแมปเชิงสัมพันธ์ของวัตถุ):
  • ออบเจ็กต์ ไม่ใช่ตาราง:นักพัฒนาเขียนออบเจ็กต์ ไม่ใช่ตาราง

  • ความสะดวกสบาย ไม่ใช่ความไม่รู้: ORM ควรจะสะดวก นักพัฒนาควรมีความรู้ขั้นต่ำเกี่ยวกับฐานข้อมูลเชิงสัมพันธ์ ORM ไม่ใช่วิธีการซ่อนความไม่รู้ แต่เป็นวิธีอำนวยความสะดวก

  • ไม่สร้างความรำคาญและโปร่งใส: ORM ควรสร้างขึ้นเพื่อให้นักพัฒนาสามารถควบคุมสิ่งที่อยู่ในฐานข้อมูลและควบคุมสิ่งที่บันทึกไว้ได้อย่างเต็มที่ ข้อมูลเดิม ออบเจ็กต์ใหม่: ORM จะช่วยให้คุณสร้างออบเจ็กต์ใหม่จากข้อมูลเดิม ซึ่งก็คือ สร้างฐานข้อมูลเดิมขึ้นใหม่เป็นออบเจ็กต์ Java

  • เพียงพอแต่ไม่มากเกินไป: ORM จะจัดเตรียมเครื่องมือทั้งหมดเพื่อแก้ไขปัญหาทั่วไปเนื่องจากอิมพีแดนซ์ไม่ตรงกัน (คำที่ใช้อ้างถึงปัญหาที่เกิดขึ้นเนื่องจากความแตกต่างระหว่างแบบจำลองฐานข้อมูลและภาษาการเขียนโปรแกรม) ORM ไม่ควรหนักจนเกินไป

  • ตำแหน่งและความคล่องตัว:ข้อมูลอยู่ในเครื่อง แต่ต้องเป็นไปได้เพื่อให้สถานะถาวรของแอปพลิเคชันย้ายไปยังส่วนต่างๆ ของแอปพลิเคชัน

  • API มาตรฐาน การใช้งานแบบเสียบได้:อาศัย API มาตรฐาน แต่สามารถเปลี่ยนการใช้งานได้ตามต้องการ

แนวคิด JPA ที่สำคัญบางประการ: JPA Entity
  • ส่วนประกอบแบบโมดูลาร์ที่สุดของวัตถุ JPA คือวัตถุ Java แบบเก่าธรรมดา (POJO) แต่ละออบเจ็กต์ต้องมีตัวระบุที่ไม่ซ้ำกัน

  • โดยทั่วไปเอนทิตี JPA จะใช้คำอธิบายประกอบ เช่น @MappedSuperClass ซึ่งอนุญาตให้ใช้ซูเปอร์คลาสที่มีฟิลด์เอนทิตีทั่วไปได้ คำอธิบายประกอบ @AttributeOverride ใช้เพื่อแทนที่เอนทิตีซูเปอร์คลาส @Column ใช้เพื่อกำหนดค่าการแมปฐานข้อมูล คำอธิบายประกอบ @Transient สามารถใช้สำหรับฟิลด์ในคลาสเอนทิตีที่ไม่ควรแมปกับฐานข้อมูล

  • ประเภทการเข้าถึงเป็นกระบวนการที่ผู้ให้บริการคงอยู่เข้าถึงสถานะในเอนทิตี การเข้าถึงฟิลด์เกิดขึ้นเมื่อผู้ให้บริการเข้าถึงฟิลด์ของคลาสโดยตรงผ่านการสะท้อนกลับ การเข้าถึงคุณสมบัติเกิดขึ้นเมื่อใช้วิธีการคุณสมบัติ Java Bean เพื่อเข้าถึงสถานะ กล่าวคือ มีการใช้ getters และ setters หากต้องการใช้การเข้าถึงคุณสมบัติ getter ต้องมีหมายเหตุประกอบด้วย @Id ประเภทการเข้าถึงแบบผสมใช้การเข้าถึงทั้งฟิลด์และคุณสมบัติในคลาสเอนทิตีเดียวกันโดยใช้คำอธิบายประกอบ @Access

Java API สำหรับบริการเว็บ RESTful

ข้อจำกัดของสถาปัตยกรรม REST:
  1. ไคลเอนต์และเซิร์ฟเวอร์เป็นอิสระจากกัน

  2. ไร้สัญชาติ: แต่ละคำขอที่มาถึงเซิร์ฟเวอร์นั้นเป็นอิสระและไม่ซ้ำกัน เซิร์ฟเวอร์ไม่ได้ตั้งสมมติฐานใดๆ จากคำขอก่อนหน้านี้

  3. ความสามารถในการแคช: ระบบจะต้องรองรับการแคชในระดับที่แตกต่างกันเพื่อปรับปรุงประสิทธิภาพและความสามารถในการขยายขนาด

  4. อินเทอร์เฟซแบบรวมหมายความว่าไคลเอ็นต์จะต้องมีอินเทอร์เฟซแบบรวมทั่วไปเพื่อเข้าถึงทรัพยากรบนเซิร์ฟเวอร์ รวมถึงการโต้ตอบกับทรัพยากรบนเซิร์ฟเวอร์ ระบบหลายระดับ: เซิร์ฟเวอร์สามารถนำไปใช้ในเลเยอร์ที่แตกต่างกันในลักษณะที่ไคลเอ็นต์ไม่ต้องกังวลเกี่ยวกับระบบหลายระดับ เช่น เซิร์ฟเวอร์ที่รองรับการปรับสมดุลโหลด

แนวคิดทั่วไปบางประการที่เกี่ยวข้องกับ JAX-RS:
  • วิธีการ HTTP GET: ขอทรัพยากรหรือทรัพยากร วิธีการร้องขอ GET นั้นเป็น idempotent ซึ่งหมายความว่าการร้องขอเดียวกันไปยังวิธีการซ้ำ ๆ ไม่ควรเปลี่ยนสถานะของทรัพยากรหรือข้อมูลบนเซิร์ฟเวอร์

  • วิธี HTTP POST: คำขอ POST ใช้เพื่อสร้างทรัพยากรใหม่บนเซิร์ฟเวอร์ ซึ่งทำให้ชุดข้อมูลบนเซิร์ฟเวอร์มีการเปลี่ยนแปลง POST มักจะมีเนื้อหาที่มีการเผยแพร่หรือแนบเพย์โหลดหรืออะไรก็ตามที่เราต้องการสร้างบนเซิร์ฟเวอร์

  • วิธี HTTP PUT: ใช้เชิงความหมายเพื่ออัปเดตทรัพยากรบนเซิร์ฟเวอร์

  • วิธี HTTP DELETE: ใช้เพื่อลบทรัพยากรบนเซิร์ฟเวอร์

  • ประเภทเนื้อหา มีเนื้อหาหลายประเภทที่สามารถใช้และสร้างได้โดยวิธีการสืบค้น: XML, CSV, EXCEL, TEXT และ JSON

  • JAX-RS มีแนวคิดในการเขียนเนื้อหาข้อความ สิ่งเหล่านี้คือโครงสร้าง API ที่ใช้ในการแปลงประเภท Java ให้เป็นประเภทที่ไคลเอนต์คาดหวัง คำอธิบายประกอบ @Produces สามารถใช้เพื่อระบุประเภทที่จะแปลงการตอบสนองของอ็อบเจ็กต์ Java

  • คำอธิบายประกอบ @Consumes จะบอกรันไทม์ JAX-RS ถึงประเภทของเนื้อหาที่วิธีการทรัพยากรที่กำหนดใช้งานอยู่ จากนั้นรันไทม์ JAX-RS จะแปลงเนื้อหา JSON ที่ส่งผ่านเป็นเพย์โหลดไปเป็นอ็อบเจ็กต์ Java ซึ่งมีประเภทเหมือนกับพารามิเตอร์ method

  • JAX-RS Exception Mapper: โครงสร้าง API ที่ใช้ในการแมปข้อยกเว้นกับการตอบสนอง HTTP คำอธิบายประกอบ @Provider ใช้เพื่อลงทะเบียนตัวแก้ไขข้อยกเว้นโดยทางโปรแกรมด้วยรันไทม์ JAX-RS

นี่เป็นการแนะนำ Java EE ที่ง่ายมาก หากต้องการสร้างเว็บแอปพลิเคชันโดยใช้ Java EE คุณจะต้องเจาะลึกลงไปในแต่ละคีย์ API
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION