Pergunta

Quero usar a estrutura de costura com o Hibernate, mas não quero usar o EJB. Não posso usar o EJB.

A primeira pergunta é: posso usar o entityManager? Ou entityManager faz parte do EJB?

Como posso ter acesso para usar o Hibernate no meu componente de costura?

Obrigado, Philip

Foi útil?

Solução

Com a costura, você pode usar o Hibernate ou o JPA (EntityManager). Funciona independentemente do EJB. Você pode usar pojo simples, se quiser.

Como posso ter acesso para usar o Hibernate no meu componente de costura?

Aqui vai hibernar as configurações Web-inf/components.xml

SessionFactory definições

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

Onde app.cfg.xml é colocado no raiz do caminho

Sessão definições

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

Gerenciamento de transações definições

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

Para injetar sua sessão de hibernação, você pode usar

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

Lembre -se de que a costura funciona com qualquer estrutura MVC, embora use as faces do servidor Java por padrão. Você pode criar até seus próprios recursos de MVC, se quiser. Dar uma olhada em Jboss costura Tuto

Outras dicas

o Site de costura é um bom lugar para começar. Há muita documentação na estrutura.

Da FAQ:

Eu tenho que usar o EJB 3 para usar a costura?

Primeiro, é importante entender que o EJB 3 abrange feijões de sessão, feijão acionado por mensagens e a API de persistência de Java. A costura atende aos três tipos de componentes, facilitando o uso e fornecendo aprimoramentos valiosos. Mas a costura possui suporte paralelo para o modelo de programação não-EJB, principalmente os Javabeans e o Hibernato Nativo. Portanto, a escolha do que usar depende de você. A maior força da costura é que ela fornece uma arquitetura unificada nos modelos EJB e não-EJB. Isso significa que, depois de aprender a usar um, você sabe automaticamente usar o outro.

Outra maneira de obter a sessão de hibernato é usar o método Delegate no EntityManager:

Session session = (Session)entityManager.getDelegate();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top