Skip to content

Manual JPA

Erick Souza edited this page Jul 25, 2017 · 12 revisions

Manual: Persistência com JPA

Criando um banco de dados

  1. Para criar um banco de dados no Postgres, abra um terminal e digite:

$ pgadmin3

  1. Conecte-se ao SGBD e crie um banco de dados:

Configurando um datasource

  1. Baixe a versão mais atual do driver JDBC para Postgres.

  2. Copie o jar do driver JDBC (neste caso, postgresql-9.1-903.jdbc4.jar) para a pasta $JBOSS_HOME/standalone/deployments.

  3. Entre no console de administração do JBoss para criação de um Data Source, acessando o endereço http://localhost:8080/

  4. Insira as credenciais de acesso e clique em Administration Console:

  1. Selecione o caminho Configuration -> Subsystems -> Datasources -> NonXA:

  1. Clique em Add e informe o tipo do Datasource, conforme a figura:

  1. Selecione o driver JDBC utilizado:

  1. Informe nome, login e senha do banco:

  1. Teste a conexão:

Testando uma aplicação

  1. Execute o manual para a criação de um EJB

  2. Crie o arquivo persistence.xml dentro do diretório META-INF do Módulo EJB:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/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">
    <persistence-unit name="ExemploPU">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>java:/TreinamentoDS</jta-data-source>
        <class>br.unifor.entity.Empregado</class>        
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.use_sql_comments" value="false" />
        </properties>
    </persistence-unit>
</persistence>
  1. No projeto ModuloEJBClient, crie a entidade:
package br.unifor.entity;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Empregado implements Serializable {
        
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private Long id;
    
    private String nome;

    //gets and sets    

}
  1. Na interface MeuBeanRemote, adicione a assinatura:
public void inserirEmpregado(Empregado empregado);
  1. Implemente o método no bean MeuBean do módulo EJB, usando anotações para fazer as injeções de dependência
package br.unifor.bean;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import br.unifor.dao.EmpregadoDAO;
import br.unifor.entity.Empregado;

@Stateless
public class MeuBean implements MeuBeanRemote {
    
    @EJB
    private EmpregadoDAO empregadoDAO;
    
    @Override
    public String helloWorld() {
        return "Hello world";
    }

    @Override
    public void inserirEmpregado(Empregado empregado) {
        empregadoDAO.insere(empregado);        
    }

}
  1. Implemente o EmpregadoDAO para persistir os dados, usando anotações para fazer as injeções de dependência
package br.unifor.dao;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import br.unifor.entity.Empregado;

@Stateless
public class EmpregadoDAO {
    
    @PersistenceContext
    private EntityManager manager;

    public void insere(Empregado empregado) {     
        manager.persist(empregado);
    }
}
  1. No programa principal, adicione o código para acessar o método do EJB
Empregado empregado = new Empregado();
empregado.setNome("Pedro");
bean.inserirEmpregado(empregado);