Upload
internet
View
102
Download
0
Embed Size (px)
Citation preview
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.