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

8
Session Bean Marco A. S. Reis

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

Page 1: Session Bean Marco 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.

Session BeanMarco A. S. Reis

Page 2: Session Bean Marco 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.

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.

Page 3: Session Bean Marco 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.

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

Page 4: Session Bean Marco 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.

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>

Page 5: Session Bean Marco 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.

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>

Page 6: Session Bean Marco 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.

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

Page 7: Session Bean Marco 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.

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

Page 8: Session Bean Marco 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.

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.