Session Bean Marco A. S. Reis. Camada de negócio Fazem parte da camada de negócio as classes que...

Post on 17-Apr-2015

103 views 0 download

Transcript of Session Bean Marco A. S. Reis. Camada de negócio Fazem parte da camada de negócio as classes que...

Session BeanMarco A. S. Reis

Camada de negócio• Fazem parte da camada de negócio as

classes que contém os métodos que irão gerar a aplicação.

• A medida que a aplicação cresce, teremos mais métodos reutilizáveis.

Configuração• A partir do EJB 3.0 temos alguns avanços e

facilidades no gerenciamento das entidades.• Para começar, vamos criar o arquivo

SistemaBancario-ds.xml em META-INF.• Em seguida, atualizaremos o

persistence.xml.• Obs.: copiar o driver do mysql (mysql-

connector-xxx.jar para jboss/server/default/lib).

SistemaBancario-ds.xml<?xml version="1.0" encoding="UTF-8"?>

<datasources>

<local-tx-datasource>

<jndi-name>jdbc/SistemaBancarioDS</jndi-name>

<connection-url>jdbc:mysql://localhost:3306/financeiro</connection-url>

<driver-class>com.mysql.jdbc.Driver</driver-class>

<user-name>root</user-name>

<password>S E N H A</password>

<min-pool-size>1</min-pool-size>

<max-pool-size>2</max-pool-size>

<metadata>

<type-mapping>mySQL</type-mapping>

</metadata>

</local-tx-datasource>

</datasources>

persistence.xml<?xml version="1.0" encoding="UTF-8" ?>

<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"

version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">

<persistence-unit name="financeiro-pu">

<jta-data-source>java:jdbc/SistemaBancarioDS</jta-data-source>

<properties>

<property name="show_sql" value="true" />

<property name="hibernate.format_sql" value="true" />

<property name="hibernate.hbm2ddl.auto" value="update" />

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />

</properties>

</persistence-unit>

</persistence>

IFachadaCorrentistapackage org.financeiro.negocio;

import java.util.*;import javax.ejb.*;import org.financeiro.entidades.*;

@Localpublic interface IFachadaCorrentista { public Correntista consultaPeloId(Long id);

public List<Correntista> consultaTodos();

public void inserir(Correntista correntista);

public void excluir(Correntista correntista);}

FachadaCorrentistapackage org.financeiro.negocio;Import {…...}

@Statelesspublic class FachadaCorrentista implements IFachadaCorrentista { @PersistenceContext(unitName = "financeiro-pu") private EntityManager em;

public Correntista consultaPeloId(Long id) { return em.find(Correntista.class, id); }

public void inserir(Correntista correntista) { em.merge(correntista); }

public List<Correntista> consultaTodos() { Query query = em.createQuery("FROM Correntista"); return query.getResultList(); }

public void excluir(Correntista correntista) { em.refresh(correntista); em.remove(correntista); }}

Injeção de Dependência• Na FachadaCorrentista vemos um exemplo

de Injeção de Dependência (@PersistenceContext).

• Alguns autores acreditam que substitui o DAO, que passa a ser um anti-pattern.

• Soluções híbridas com injeção de dependência de DAO podem ser uma alternativa.