2010-08-09 56 views
4

我想在Hibernate中使用SEAM Framework,但不想使用EJB。我無法使用EJB。幫我理解SEAM和Hibernate?

第一個問題是,我可以使用EntityManager嗎?或者EntityManager是EJB的一部分?

如何獲得在我的SEAM組件中使用Hibernate的權限?

謝謝你,菲利普

回答

5

使用Seam,您可以使用Hibernate或JPA(EntityManager)。無論EJB如何,它都能工作。如果你願意,你可以使用簡單的POJO。

如何獲得在我的SEAM組件中使用Hibernate的權限?

這裏不用休眠設置WEB-INF/components.xml中

的SessionFactory設置

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

凡app.cfg.xml被放置在根類路徑的

Session設置

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

TransactionManagement中設置

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

以注入Hibernate的Session可以使用

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

記住煤層任何MVC框架的工作,儘管它使用Java服務器面臨默認。如果您願意,您甚至可以創建自己的MVC功能。看看JBoss Seam Tuto

+0

@Phil你可以使用任何你想要的持久化技術。不僅僅是Hibernate或JPA – 2010-08-09 16:03:46

0

Seam website是一個良好的開端。這個框架有很多文檔。

從常見問題:

Do I have to use EJB 3 to use Seam?

首先,要了解 是EJB 3包括會話bean, 消息驅動Bean和Java 持久性API是很重要的。 Seam迎合所有 三種組件類型,使它們更易於使用並提供有價值的 增強功能。但Seam並行支持非EJB編程 模型,其中最值得注意的是JavaBeans和 本地Hibernate。所以 的選擇取決於你。 Seam的 最大的優勢在於它爲 EJB和非EJB模型提供了一個統一的體系結構 。這意味着 一旦你學會了如何使用其中一個,你自動知道如何使用其他的 。

0

獲得Hibernate的Session的另一種方法是使用委託方法上的EntityManager:

Session session = (Session)entityManager.getDelegate();