JTA กับธุรกรรมในประเทศแตกต่างกันอย่างไร?
ตัวอย่างที่แสดงว่าเมื่อใดควรใช้ JTA และเมื่อใดควรใช้ธุรกรรมในพื้นที่จะดีมาก
JTA กับธุรกรรมในประเทศแตกต่างกันอย่างไร?
ตัวอย่างที่แสดงว่าเมื่อใดควรใช้ JTA และเมื่อใดควรใช้ธุรกรรมในพื้นที่จะดีมาก
คำตอบ:
JTA
เป็น API ทั่วไปสำหรับจัดการธุรกรรมใน Java ช่วยให้คุณสามารถเริ่มต้นกระทำและย้อนกลับธุรกรรมด้วยวิธีที่เป็นกลางของทรัพยากร โดยทั่วไปสถานะธุรกรรมจะถูกเก็บไว้ใน TLS (Thread Local Storage) และสามารถแพร่กระจายไปยังเมธอดอื่นใน call-stack ได้โดยไม่จำเป็นต้องส่งผ่านอ็อบเจ็กต์บริบทที่ชัดเจน ทรัพยากรในการทำธุรกรรมสามารถเข้าร่วมธุรกรรมต่อเนื่องได้ หากมีทรัพยากรมากกว่าหนึ่งรายการที่เข้าร่วมในธุรกรรมดังกล่าวอย่างน้อยหนึ่งในนั้นจะต้องเป็นทรัพยากรที่เรียกว่า XA
A resource local transaction
คือธุรกรรมที่คุณมีกับทรัพยากรเดียวโดยใช้ API เฉพาะของตัวเอง โดยทั่วไปธุรกรรมดังกล่าวจะไม่แพร่กระจายไปยังเมธอดอื่นใน call-stack และคุณจะต้องส่งผ่านอ็อบเจ็กต์บริบทที่ชัดเจน ในธุรกรรมทรัพยากรในพื้นที่ส่วนใหญ่เป็นไปไม่ได้ที่จะมีทรัพยากรหลายรายการที่เข้าร่วมในธุรกรรมเดียวกัน
คุณจะใช้ทรานแซกชันรีซอร์สโลคัลในโค้ด JDBC ระดับต่ำใน Java SE ที่นี่วัตถุบริบทแสดงโดยตัวอย่างของjava.sql.Connection
. ตัวอย่างอื่น ๆ ของการทำธุรกรรมทรัพยากรในพื้นที่คือนักพัฒนาที่สร้างแอปพลิเคชันระดับองค์กรในราวปี 2545 เนื่องจากตัวจัดการธุรกรรม (ที่ใช้โดย JTA) มีราคาแพงแหล่งที่มาแบบปิดและสิ่งที่ซับซ้อนในการตั้งค่าในยุคนั้นผู้คนจึงได้รับทรัพยากรในท้องถิ่นที่มีราคาถูกกว่าและง่ายกว่า
คุณจะใช้ธุรกรรม JTA ในทุกสถานการณ์อื่น ๆ เซิร์ฟเวอร์โอเพ่นซอร์สที่เรียบง่ายขนาดเล็กฟรีและโอเพ่นซอร์สเช่น TomEE (25MB) หรือ GlassFish (35MB) รองรับ JTA ได้ทันที ไม่มีอะไรต้องตั้งค่าและใช้งานได้จริง
สุดท้ายเทคโนโลยีเช่น EJB และฤดูใบไม้ผลิทำให้แม้แต่ JTA declarative transactions
ใช้โดยการเสนอขายง่าย ในกรณีส่วนใหญ่แนะนำให้ใช้เนื่องจากง่ายกว่าสะอาดกว่าและมีข้อผิดพลาดน้อยกว่า ทั้ง EJB และ Spring สามารถใช้ JTA ภายใต้ฝาครอบ
ควรตั้งค่าประเภทธุรกรรมเป็น "RESOURCE_LOCAL" สำหรับแอปพลิเคชัน Java SE และเป็น "JTA" สำหรับแอปพลิเคชัน Java EE "RESOURCE_LOCAL" อาจทำงานได้ดีกับเว็บแอปพลิเคชันบางตัวที่ติดตั้งบน Tomcat แต่อาจทำให้เกิดปัญหาเมื่อคุณเรียกใช้แอปพลิเคชันของคุณภายใต้สภาพแวดล้อม glassfish
หากคุณกำลังทำธุรกรรมแบบกระจายคุณต้องใช้ "JTA" เป็นผู้จัดการธุรกรรมของคุณ
Java Transaction API (JTA) เป็นหนึ่งใน Java Enterprise Edition (Java EE) API ที่อนุญาตให้ทำธุรกรรมแบบกระจายผ่านทรัพยากร XA หลายรายการในสภาพแวดล้อม Java
แอปพลิเคชัน J2EE รวมถึงการสนับสนุน DT ผ่าน 2 ข้อกำหนด
JTA ---> Java Transaction API การใช้งานระดับไฮเทคและเปิดใช้งาน
JTS ---> Java Transaction Service เสมอ