16
Hibernate + JBoss Mapeamento O-R em aplicações corporativas Ricardo Cavalcanti [email protected] Jobson Ronan [email protected]

Hibernate + JBoss

Embed Size (px)

DESCRIPTION

Hibernate + JBoss. Mapeamento O-R em aplicações corporativas. Ricardo Cavalcanti [email protected]. Jobson Ronan [email protected]. Hibernate + JBoss. Vantagens Gerenciamento dos detalhes de configurações do Hibernate Gerenciamento de suas Sessões do Hibernate. Hibernate + JBoss. - PowerPoint PPT Presentation

Citation preview

Page 1: Hibernate + JBoss

Hibernate + JBoss

Mapeamento O-R em aplicações corporativas

Ricardo [email protected]

Jobson [email protected]

Page 2: Hibernate + JBoss

Hibernate + JBoss

Vantagens Gerenciamento dos detalhes de

configurações do Hibernate Gerenciamento de suas Sessões do

Hibernate

Page 3: Hibernate + JBoss

Hibernate + JBoss

Usando o Hibernate no JBoss podemos fazer o deploy de nossa aplicação como um “Hibernate Archive”, .har

Torna o uso do Hibernate ainda mais simples

Page 4: Hibernate + JBoss

Hibernate MBean

O Hibernate Archive instancia e configura o Hibernate MBean

Este será responsável por construir o SessionFactory e registra-lo no JNDI

O Hibernate MBean, também permite inspecionar e alterar as configurações do SessionFactory em tempo de execução

Page 5: Hibernate + JBoss

Hibernate MBean Exemplo

<mbean code="org.jboss.hibernate.jmx.Hibernate“name="jboss.har:service=Hibernate">

<attribute name="DatasourceName">java:/DefaultDS</attribute>

<attribute name="Dialect">net.sf.hibernate.dialect.HSQLDialect

</attribute>

<attribute name="SessionFactoryName">java:/hibernate/SessionFactory

</attribute>

<attribute name="CacheProviderClass">net.sf.hibernate.cache.HashtableCacheProvider

</attribute>

</mbean>

...muito semelhante a configuração do hibernate

Page 6: Hibernate + JBoss

Hibernate archive

Contém classes e mapeamentos mais um deployment descriptor hibernate-service.xml no diretório META-INF

hibernate-service.xml<server> <mbean code="org.jboss.hibernate.jmx.Hibernate“

name="jboss.har:service=Hibernate">

<attribute name="DatasourceName">java:/DefaultDS</attribute> <!-- .... --> </mbean></server>

Page 7: Hibernate + JBoss

Hibernate archive Estrutura típica

Page 8: Hibernate + JBoss

Usando objetos Hibernate

Quando é feito o deploy do hibernate archive, os objetos do Hibernate ficam disponíveis a outras aplicações através do SessionFactory

Uma vez este estando registrado no JNDI, pode se fazer um simples lookup e manualmente criar uma Hibernate Session

InitialContext ctx = new InitialContext();SessionFactory factory = (SessionFactory)

ctx.lookup("java:/hibernate/SessionFactory");Session hsession = factory.openSession();

Page 9: Hibernate + JBoss

Usando objetos Hibernate

Esta forma de acesso requer gerenciamento manual das sessões e transações do hibernate

Pode ser útil para migrar código já existente para o JBoss

Porém, no contexto de grandes aplicações J2EE, seria interessante que os objetos do hibernate fizessem parte de uma transaçao JTA existente

Page 10: Hibernate + JBoss

Usando objetos Hibernate

Situação comum no caso de querer acessar objetos do hibernate em um Session Bean

O JBoss possui a classe HibernateContext (pkg: org.jboss.hibernate.session) para facilitar esta integração

Método getSession retorna a Session do hibernate ligada a transação JTA corrente

Session hsession = HibernateContext.getSession("java:/hibernate/CaveatEmptorSessionFactory");

Page 11: Hibernate + JBoss

Usando objetos Hibernate

Desta forma não é necessário fechar as sessões, tampouco gerenciar as transações

Garante um gerenciamento de transações de forma declarativa

Page 12: Hibernate + JBoss

Usando objetos Hibernate

Cuidado com suas lazy collections Uma vez se seus objetos são serializado

e enviados até um cliente, lazy collections passam a não funcionar.

Page 13: Hibernate + JBoss

HAR dentro do EAR

Arquivos HAR podem ser usados como componentes de um arquivo EAR durante o deploy

Porém, como arquivo HAR não é um tipo padrão J2EE este precisa ser declarado no arquivo jboss-app.xml

<!DOCTYPE jboss-app PUBLIC "-//JBoss//DTD J2EE Application 1.4//EN" "http://www.jboss.org/j2ee/dtd/jboss-app_4_0.dtd"><jboss-app> <module> <har>caveatemptor.har</har> </module></jboss-app>

Page 14: Hibernate + JBoss

Mini-projeto

Implementar o seguinte modelo no hibernate

Locacao

id : IntegerdataLocacao : DatedataDevolucaoPrevista : DatedataDevolucaoEfetiva : Date

Filme

Codigo : IntegerNome : String

0..*0..*

Cliente

cpf : StringNome : String

0..*0..*

Avaliação

id : Integercomentario : Stringnota : Double

0..*0..* 0..*0..*

Page 15: Hibernate + JBoss

Mini-projeto

Implementar um Stateless Session Bean no padrão SessionFacade com as seguintes funcionalidades

LocadoraFacade

cadastrarCliente(cliente : Cliente)procurarCliente(cpfCliente : String) : ClienteprocurarCliente(nome : String) : Cliente[]cadastrarFilme(filme : Filme)listarTodosFilmes() : Filme[]listarFilmesDisponíveis() : Filme[]procurarFilme(nome : String) : Filme[]procurarFilme(codigoFilme : Integer) : FilmeefetuarLocacao(cpfCliente : String, codigoFilme : Integer)efetuarDevolucao(cpfCliente : String, codigoFilme : Integer)adicionarComentario(cpfCliente : String, codigoFilme : Integer, comentario : String, nota : double)

<<<StatelessEJB>>>

Page 16: Hibernate + JBoss

Referências

The JBoss 4 Application Server Guide, release 2