hibernate + jboss

Post on 30-Dec-2015

16 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Hibernate + JBoss. Mapeamento O-R em aplicações corporativas. Ricardo Cavalcanti roc3@cin.ufpe.br. Jobson Ronan jrjs@cin.ufpe.br. Hibernate + JBoss. Vantagens Gerenciamento dos detalhes de configurações do Hibernate Gerenciamento de suas Sessões do Hibernate. Hibernate + JBoss. - PowerPoint PPT Presentation

TRANSCRIPT

Hibernate + JBoss

Mapeamento O-R em aplicações corporativas

Ricardo Cavalcantiroc3@cin.ufpe.br

Jobson Ronanjrjs@cin.ufpe.br

Hibernate + JBoss

Vantagens Gerenciamento dos detalhes de

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

Hibernate

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

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

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

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>

Hibernate archive Estrutura típica

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();

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

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");

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

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.

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>

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..*

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>>>

Referências

The JBoss 4 Application Server Guide, release 2

top related