วันอังคารที่ 8 มกราคม พ.ศ. 2551

Config Hibernate ให้ใช้บน RAD 6.0 + Oracle แบบ EJB

วิธีนี้จะดีกว่าวิธีที่กลาวมก่อนแล้ว เพราะให้ EJB ควบคุม Transaction นะครับ เราไม่จำเป็นต้องเปิด ปิด มัน มันจะ ปิดให้เองโดย EJB ครับ ทำได้ดังนี้

1. ต้องเปลี่ยนเป็นใช้ .getCurrentSession() แทน openSession() ครับ ตอนเราเรียก Session มาใช้งาน
2. แก้ hibernate.cfg.xml เพื่อบอกมันว่าจะใช้ Transaction ซึ่งแต่ละ Server จะเรียกคนละชื่อกันครับ ต้องดูเอา (ผมเคยลอง Test MySQL กับ Websphere 6.0 แล้ว ใช้งานไม่ได้ครับ)

<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</property>

อันนี้เป็นของ Websphere Server 6.x นะครับ ถึงจะใช้งานได้

3. แล้วเราก็จะใช้งานได้แล้ว

หมายเหตุ
1. วิธีแบบนี้มีข้อเสียคือ ต้องทำผ่าน EJB เสมอไม่ว่าจะเป็น การ Select ค่าก็ตาม
2. ต้องพยายามทำบน EJB ตัวเดียวกัน เพราะ ถ้าทำคนละตัวอาจจะมีการเรียก Insert, Update ผิดพลาดได้