เปรียบเทียบกับ EJB 2.1 แล้ว EJB 3.0 ช่วยให้กระบวนการสร้าง แอ็พพลิเคชัน Enterprise JavaBean เป็นเรื่องง่าย
แนวคิดสำคัญของข้อมูลจำเพาะ EJB 3.0 เน้นที่โปรแกรมมิงโมเดล plain old Java™ object (POJO) ที่ใช้หมายเหตุประกอบ Java เพื่อบันทึกข้อมูล ที่ descriptors การปรับใช้ใช้เพื่อให้มี Descriptors การปรับใช้ขณะนี้ เป็นทางเลือกในกรณีส่วนใหญ่ การใช้ค่าดีฟอลต์โดยอิสระซึ่งหมายความว่าคุณ ต้องเขียนและคงโค้ดการสนับสนุนน้อยลง วิธีนี้ช่วยให้งายต่อการ ใช้โปรแกรมมิงในการสร้างและใช้งานคอมโพเนนต์ EJB 3.0 ได้ง่ายดาย
เมื่อ EJB 2.1 ถูกเพิ่มการสนับสนุนสำหรับเว็บเซอร์วิส การเปลี่ยนแปลงในการนำไปปฏิบัติใช้ ของ beans เซสชัน การเปลี่ยนแปลงวิธีที่ enterprise beans ถูกเรียกใช้และสกีมา XML ใหม่ที่จะใช้แทน DTD ที่กำหนด ejb-jar.xml deployment descriptor นั้น EJB 3.0 ได้ก้าวหน้าไปอีกหนึ่งขึ้นแล้ว EJB 3.0 ได้แนะนำกลไกการคงค่า lightweight entity bean ผ่าน Java Persistence API เอนทิตีเหล่านี้อิง ตาม POJO และสามารถรันภายนอกคอนเทนเนอร์ EJB และไม่จำเป็นต้องใช้ อินเตอร์เฟส หรือโค้ด EJB ใดๆ ในเอนทิตี เช่นเดียวกัน beans เซสชัน ยังไม่จำเป็น ต้องใช้คอมโพเนนต์อินเตอร์เฟสเฉพาะ EJB อีกต่อไป
การเปรียบเทียบคลาส EJB 2.1 ที่รวมไฟล์ Deployment Descriptor กับคลาส EJB 3.0 เทียบเท่า
ตัวอย่างในตาราง 1 มีฟังก์ชันการทำงานเทียบเท่ากัน:
| EJB 2.1 | EJB 3.0 |
|---|---|
Java Class public class AccountBean
implements javax.ejb.SessionBean {
SessionContext ctx;
DataSource accountDB;
public void setSessionContext(SessionContext ctx) {
this.ctx = ctx;
}
public void ejbCreate() {
accountDB = (DataSource)ctx.lookup(
"jdbc/accountDB");
}
public void ejbActivate() { }
public void ejbPassivate() { }
public void ejbRemove() { }
public void setAccountDeposit(int empId,
double deposit) {
...
Connection conn = accountDB.getConnection();
...
}
...
}
|
Java Class @Stateless
public class AccountBean implements Account
{
@Resource private DataSource accountDB;
public void setAccountDeposit(int customerId,
double deposit) {
...
Connection conn = accountDB.getConnection();
...
}
...
}
|
Deployment Descriptor <session>
<ejb-name>AccountBean</ejb-name>
<local-home>AccountHome</local-home>
<local>Account</local>
<ejb-class>com.example.AccountBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<resource-ref>
<res-ref-name>jdbc/accountDB</res-ref-name>
<res-ref-type>javax.sql.DataSource</res-ref-type>
<res-auth>Container</res-auth>
</resource-ref>
</session>
...
<assembly-descriptor>...</assembly-descriptor>
|