import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class CreateSession {
private static SessionFactory factory;
//Bloco estático que inicializa o Hibernate e dá condições de criar uma sessão
// ou seja, essa é a nossa Fábrica de Sessões
static {
try {
//Substitua o "endereco" pelo endereço do arquivo "hibernate.cfg.xml" no seu Projeto
factory = new Configuration().configure("endereco/hibernate.cfg.xml").buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
factory = null;
}
}
//Método que retorna a sessão aberta
public static Session getSession() {
return factory.openSession();
}
}
Pedro Dias - "Wise Solutions"
sexta-feira, 16 de julho de 2010
Classe DAO para uso com HIBERNATE
package com.cts.persistence.DAO;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.cts.persistence.Session.CreateSession;
/**
*
* @author pedro.dias
*/
// Coloque a anotaçãode referência Genérica "T" na frente do nome da classe
public class GenericDAO {
private static Session sessao;
private Transaction transacao;
/** Creates a new instance of GenericDAO */
public void inserir(T obj) throws Exception {
sessao = CreateSession.getSession();
transacao = sessao.beginTransaction();
sessao.save(obj);
sessao.flush();
transacao.commit();
sessao.close();
}
public void alterar(T obj) throws Exception {
sessao = CreateSession.getSession();
transacao = sessao.beginTransaction();
sessao.update(obj);
sessao.flush();
transacao.commit();
sessao.close();
}
public void deletar(T obj) throws Exception {
sessao = CreateSession.getSession();
transacao = sessao.beginTransaction();
sessao.delete(obj);
sessao.flush();
transacao.commit();
sessao.close();
}
public List listarTudo(Class clazz) throws Exception {
sessao = CreateSession.getSession();
transacao = sessao.beginTransaction();
List objts;
objts = null;
Criteria selectAll = sessao.createCriteria(clazz);
transacao.commit();
objts = selectAll.list();
sessao.close();
return objts;
}
public Object buscar(Class clazz, String pk) throws Exception {
sessao = CreateSession.getSession();
transacao = sessao.beginTransaction();
Object objt = (Object) sessao.load(clazz, new Integer(Integer
.parseInt(pk)));
transacao.commit();
sessao.flush();
sessao.close();
return objt;
}
public void rollBack() {
transacao.rollback();
sessao.close();
}
public void closeConnection() throws Exception {
sessao = CreateSession.getSession();
sessao.connection().createStatement().execute("SHUTDOWN");
}
}
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.cts.persistence.Session.CreateSession;
/**
*
* @author pedro.dias
*/
// Coloque a anotação
public class GenericDAO
private static Session sessao;
private Transaction transacao;
/** Creates a new instance of GenericDAO */
public void inserir(T obj) throws Exception {
sessao = CreateSession.getSession();
transacao = sessao.beginTransaction();
sessao.save(obj);
sessao.flush();
transacao.commit();
sessao.close();
}
public void alterar(T obj) throws Exception {
sessao = CreateSession.getSession();
transacao = sessao.beginTransaction();
sessao.update(obj);
sessao.flush();
transacao.commit();
sessao.close();
}
public void deletar(T obj) throws Exception {
sessao = CreateSession.getSession();
transacao = sessao.beginTransaction();
sessao.delete(obj);
sessao.flush();
transacao.commit();
sessao.close();
}
public List
sessao = CreateSession.getSession();
transacao = sessao.beginTransaction();
List objts;
objts = null;
Criteria selectAll = sessao.createCriteria(clazz);
transacao.commit();
objts = selectAll.list();
sessao.close();
return objts;
}
public Object buscar(Class clazz, String pk) throws Exception {
sessao = CreateSession.getSession();
transacao = sessao.beginTransaction();
Object objt = (Object) sessao.load(clazz, new Integer(Integer
.parseInt(pk)));
transacao.commit();
sessao.flush();
sessao.close();
return objt;
}
public void rollBack() {
transacao.rollback();
sessao.close();
}
public void closeConnection() throws Exception {
sessao = CreateSession.getSession();
sessao.connection().createStatement().execute("SHUTDOWN");
}
}
APLICAÇÃO EJB no ECLIPSE (passo a passo) usando o HIBERNATE 3, MySQL, FLEX, GRANITE E JBOSS
O primeiro passo do nosso TUTORIAL é a configuração de ambiente, onde serão necessários:
- Eclipse Ganymede, com os seguintes plugins instalados:
- flex 3, hibernate tools, graniteds.
- JBoss 4.2.3 GA
Dentro da sua workspace, você deve:
Criar 1 projeto JPA:
-“New JPA Project”
Seguimos um padrão colocando o nome do projeto da seguinte maneira: “NomeProjetoJPA”
Nesse projeto deve permanecer toda a lógica de negócios e de persistência.
O arquivo “persistence.xml” que fica na pasta META-INF deve ser configurado da seguinte maneira:

Esse arquivo irá garantir a solidez e o bom funcionamento do seu banco de dados e tudo o que se refere à persistência.
Na pasta “src” você vai desenvolver a lógica da sua aplicação:
- Ex: Na pasta “src” você cria um package br.com.ejb.estudo e coloca as suas classes “*.java”dentro desse local.
Criar 1 projeto WAR:
- “New Dinamic Web Project”
Seguimos um padrão colocando o nome do projeto da seguinte maneira: “NomeProjetoWAR”
Nesse projeto você irá desenvolver toda a sua parte de VISÃO com o FLEX 3, deverão conter os seus arquivos “*.as”, “*.mxml”, “*.swf” .
Criar 1 projeto EAR:
- “New Enterprise Application Project”
Seguimos um padrão colocando o nome do projeto da seguinte maneira: “NomeProjetoEAR”
Apenas um arquivo deve ser configurado nesse projeto, o arquivo “application.xml”.
Ele deverá ficar dessa maneira:

No eclipse, você deve ir na aba “Servers” e adicionar um novo servidor:
- “New Server JBoss v4.2.3”
Dentro desse servidor, deve ser adicionado os seus projeto EAR e automaticamente os outros serão adicionados, isso se deve ao fato do EAR levar as referências dos projetos JPA e WAR.
Uma observação super importante a cerca do JBoss:
Na pasta “jboss-4.2.3.GA\server\default\deploy” que, por default, representa a sua instância no servidor, será o local onde acontecerá o deploy de toda a sua aplicação. A sua fábrica de conexões vai ficar centralizada em um arquivo chamado “nomeprojeto-ds.xml” que segue abaixo:

Esse arquivo permite, ainda, a possibilidade de configurações avançadas de conexão.
Clique com o botão direito no projeto JPA (onde devem estar as suas classes de domínio (POJOS))e clique em “Add graniteDS Nature” e configure conforme a imagem abaixo:

Você deve adicionar, explicitamente, essas libs ao seu projeto NomeProjetoWAR, clicando com o botão direito sobre o projeto e setando toda essa assinatura ao seu Flex Compiler:
-locale en_US -services "../WebContent/WEB-INF/flex/services-config.xml" -include-libraries "../flex_libs/granite-essentials.swc" "../flex_libs/granite.swc" "-keep-as3-metadata=Bindable,Managed,ChangeEvent,NonCommittingChangeEvent, Transient,Version,Name,In,Out,Observer,Destroy, Event"
- Eclipse Ganymede, com os seguintes plugins instalados:
- flex 3, hibernate tools, graniteds.
- JBoss 4.2.3 GA
Dentro da sua workspace, você deve:
Criar 1 projeto JPA:
-“New JPA Project”
Seguimos um padrão colocando o nome do projeto da seguinte maneira: “NomeProjetoJPA”
Nesse projeto deve permanecer toda a lógica de negócios e de persistência.
O arquivo “persistence.xml” que fica na pasta META-INF deve ser configurado da seguinte maneira:
Esse arquivo irá garantir a solidez e o bom funcionamento do seu banco de dados e tudo o que se refere à persistência.
Na pasta “src” você vai desenvolver a lógica da sua aplicação:
- Ex: Na pasta “src” você cria um package br.com.ejb.estudo e coloca as suas classes “*.java”dentro desse local.
Criar 1 projeto WAR:
- “New Dinamic Web Project”
Seguimos um padrão colocando o nome do projeto da seguinte maneira: “NomeProjetoWAR”
Nesse projeto você irá desenvolver toda a sua parte de VISÃO com o FLEX 3, deverão conter os seus arquivos “*.as”, “*.mxml”, “*.swf” .
Criar 1 projeto EAR:
- “New Enterprise Application Project”
Seguimos um padrão colocando o nome do projeto da seguinte maneira: “NomeProjetoEAR”
Apenas um arquivo deve ser configurado nesse projeto, o arquivo “application.xml”.
Ele deverá ficar dessa maneira:
No eclipse, você deve ir na aba “Servers” e adicionar um novo servidor:
- “New Server JBoss v4.2.3”
Dentro desse servidor, deve ser adicionado os seus projeto EAR e automaticamente os outros serão adicionados, isso se deve ao fato do EAR levar as referências dos projetos JPA e WAR.
Uma observação super importante a cerca do JBoss:
Na pasta “jboss-4.2.3.GA\server\default\deploy” que, por default, representa a sua instância no servidor, será o local onde acontecerá o deploy de toda a sua aplicação. A sua fábrica de conexões vai ficar centralizada em um arquivo chamado “nomeprojeto-ds.xml” que segue abaixo:
Esse arquivo permite, ainda, a possibilidade de configurações avançadas de conexão.
Clique com o botão direito no projeto JPA (onde devem estar as suas classes de domínio (POJOS))e clique em “Add graniteDS Nature” e configure conforme a imagem abaixo:
Você deve adicionar, explicitamente, essas libs ao seu projeto NomeProjetoWAR, clicando com o botão direito sobre o projeto e setando toda essa assinatura ao seu Flex Compiler:
-locale en_US -services "../WebContent/WEB-INF/flex/services-config.xml" -include-libraries "../flex_libs/granite-essentials.swc" "../flex_libs/granite.swc" "-keep-as3-metadata=Bindable,Managed,ChangeEvent,NonCommittingChangeEvent, Transient,Version,Name,In,Out,Observer,Destroy, Event"
Assinar:
Postagens (Atom)