Session Bean Marco A. S. Reis. Camada de negócio Fazem parte da camada de negócio as classes que...
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.