سؤال

أرغب في استخدام إطار التماس مع السبات ولكن لا أريد استخدام EJB. لا يمكنني استخدام EJB.

السؤال الأول هو ، هل يمكنني استخدام EntityManager؟ أم أن ContityManager جزء من EJB؟

كيف يمكنني الوصول إلى استخدام السبات في مكوني من التماس؟

شكرا ، فيليب

هل كانت مفيدة؟

المحلول

مع التماس ، يمكنك استخدام إما السبات أو JPA (entityManager). إنه يعمل بغض النظر عن EJB. يمكنك استخدام Plain Pojo إذا كنت تريد.

كيف يمكنني الوصول إلى استخدام السبات في مكوني من التماس؟

هنا يذهب إعدادات السبات الويب-Inf/Components.xml

SessionFactory إعدادات

<persistence:hibernate-session-factory name="sessionFactory" cfg-resource-name="app.cfg.xml"/>

حيث يتم وضع app.cfg.xml في جذر classpath

جلسة إعدادات

<persistence:managed-hibernate-session name="session" hibernate-session-factory="#{sessionFactory}" auto-create="true"/>

ادارة العمليات التجارية إعدادات

<!--It takes care of calling begin and commit in the underlying Transaction API-->
<!--Here a Hibernate Transaction API-->
<tx:hibernate-transaction session="#{session}"/>

لحقن جلسة السبات الخاصة بك يمكنك استخدامها

/**
  * Seam lookup Seam enabled components Through its referenced name - session 
  */
private @In Session session;

ضع في اعتبارك أن Seam يعمل مع أي إطار عمل MVC على الرغم من أنه يستخدم Java Server يوجه افتراضيًا. يمكنك إنشاء قدرات MVC الخاصة بك إذا أردت. ألق نظرة على JBoss Seam Tuto

نصائح أخرى

ال موقع التماس هو مكان جيد للبدء. هناك الكثير من الوثائق حول الإطار.

من الأسئلة الشائعة:

هل يجب علي استخدام EJB 3 لاستخدام التماس؟

أولاً ، من المهم أن نفهم أن EJB 3 يشمل حبوب الجلسة ، والفاصوليا التي تعتمد على الرسائل ، وواجهة برمجة تطبيقات Java Pressustence. يخدم Seam جميع أنواع المكونات الثلاثة ، مما يجعلها أسهل في الاستخدام وتوفير تحسينات قيمة. لكن Seam لديه دعم مواز لنموذج البرمجة غير EJB ، وأبرزها Javabeans و Hibernate الأصلي. لذا فإن اختيار ما يجب استخدامه متروك لك. أعظم قوة Seam هي أنه يوفر بنية موحدة في كل من نماذج EJB وغير EJB. هذا يعني بمجرد أن تتعلم كيفية استخدام واحدة ، فأنت تعرف تلقائيًا كيفية استخدام الآخر.

هناك طريقة أخرى للحصول على جلسة السبات وهي استخدام طريقة المندوب على EntityManager:

Session session = (Session)entityManager.getDelegate();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top