utilizando swing com jpa_hibernate
TRANSCRIPT
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 1/23
HOME AUTHOR MAGAZINES LIST OF POSTS
Home Swing Jdbc:Banco De Dados Hibernate |
Jpa Utilizando Swing com JPA/Hibernate
Utilizando Swing com JPA/HibernatePublished by Ballem | Fev 23 , 2011 | Swing | Jdbc:Banco De Dados
| Hibernate | Jpa
Este tutorial poderia ser uma segunda parte do tutorial anterior
Utilizando Swing com Banco de Dados, a classe de interface com
usurio 99% a mesma, a classe controller idem.
O que est diferente aqui que utilizaremos o framework
Hibernate, para a persistncia com banco de dados, com JPA
(Java Persistence API).
Utilizaremos desta vez o banco de dados HSQLDB no modo
standalone, mas quem preferir pode continuar utilizando o MySql
como no tutorial anterior, s utilizar as mesmas configuraes
de url, drive, usurio e senha, quando for necessrio utilizar.
O padro MVC tambm ser seguido como no tutorial anterior,
do link acima, ento caso no tenha lido o tutorial anterior, seria
importante ler a respeito do que o padro MVC.
1. Arquivos necessrios
Para o desenvolvimento deste tutorial sero necessrias
algumas bibliotecas referentes ao Hibernate e a JPA, e mais
algumas que necessitam ser utilizadas como algumas
dependncias. E tambm claro do Driver JDBC do HSQLDB ou
do MySql.
Veja as bibliotecas necessrias na figura 1.
Search this Site...
Social Media
Popular Posts
Manipulando Arquivo Txt com
Java
Ler dados do teclado com a
classe Scanner
Chat Multi Usurios com
Socket
Utilizando Swing com Banco
de Dados
Enviando email com a API
JavaMail
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 2/23
Figura 1 - Bibliotecas
Montei um pacote com todas as bibliotecas e as disponibilizei
para download aqui.
2. Java Persistence API e Hibernate
JPA uma especificao padro do Java para persistncia de
dados. A JPA define um meio de mapeamento objeto-relacional
para objetos Java, os chamados POJOs, denominados beans de
entidade.
Diversos frameworks de mapeamento objeto/relacional, como o
Hibernate, implementam a JPA gerenciando o desenvolvimento
de entidades do Modelo Relacional usando a plataforma nativa
Java SE e Java EE.
O Hibernate um framework para mapeamento objeto-
relacional, totalmente escrito em Java. O principal objetivo do
Hibernate diminuir a complexidade entre os programas escritos
em Java, baseando-se no modelo orientado objeto.
Quando utilizamos o HIbernate, deixamos de trabalhar com
tabelas e colunas, e passamos a trabalhar com objetos. Quem j
desenvolveu em Java com banco de dados e utilizando ResultSet
e PreparedStatement para criar consultas e outras aes com o
banco de dados, trabalhou diretamente com tabelas e colunas.
Utilizando o Hibernate, as tabelas e colunas so mapeadas por
mapeamentos XML ou anotaes, e a partir da trabalhamos
apenas com objetos, o que facilita em muito o desenvolvimento.
3. Arquivo persistence.xml
Categories
Arquivos (Xml|Txt|Properties)
(8)
Dicas (5)
Fundamentos Java (9)
Hibernate | Jpa (6)
Jdbc:Banco De Dados (14)
Jms (Java Message Service)
(1)
Nosql:Banco De Dados (2)
Noticias (18)
Outras Apis (15)
Socket (4)
Spring Framework (4)
Swing (6)
Video Aula (5)
Tag Cloud
arquivos artigos banco de
dados boas praticas capturar html
certificacoes chat criteria dao
dom easy java magazine
fundamentos java herana
hibernate hsqldb html java
java magazine javamail jboss
jdbc jdk leitura e escrita de
arquivos livros mongodb mvc
mysql nosql noticias ocaj 7
ocpjp 7 preparedstatement
resultset revistas scanner
sessionfactory socket spring
framework spring mvc swing video
aula xml
Favourites Links
Apache Tomcat
Forum GUJ
Forum Javafree
Hibernate Framework
Intellij IDEA
JBoss Application Server
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 3/23
Quando utilizamos JPA, precisamos utilizar um arquivo que
contem algumas configuraes importantes para a conexo com
o banco de dados atravs do Hibernate. Este arquivo deve ser
chamado de persistence.xml e estar dentro de um diretrio
chamado META-INF no classpath da aplicao, ou seja, no
mesmo nvel do pacote br, o primeiro pacote dos fontes, veja na
figura 2.
Figura 2 - Projeto
Listagem 1. Arquivo persistence.xml
A tag persistence-unit possui dois elementos importantes, o
name que recebe um nome para identificar as configuraes e
o transaction-type que indica se aplicao ser com ou sem
container (servidor web).
Precisamos tambm indicar neste arquivo onde se encontra o
mapeamento, para isso, usamos a tag class e nela indicamos a
classe que contm as anotaes referentes a tabela Contatos.
As demais tags, filhas de properties, so referentes as
configuraes do Hibernate, como as configuraes para
conexo e para exibir alguns logs no console dos SQLs
executados.
MongoDB
MySQL
OpenShift - Red Hat
Oracle
Spring Framework
Follow us on Twitter
Follow @mballem 37 follow ers
Recommend us on Google
2
Find us on Facebook
Encontre-nos no Facebook
mballem.com
Curtir
148 pessoas curtiram mballem.com.123456789101112131415161718
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 4/23
4. Tabela contatos
Desta vez no iremos precisar de script para criar a tabela
Contatos no banco de dados, a JPA nos fornece uma maneira
simples para isso. Basta a criao de um mtodo que atravs
dos mapeamentos as tabelas so geradas. Para criar o banco
de dados basta executar a classe principal GeraBanco, conforme
a listagem 2.
Listagem 2. Gerando o banco de dados.
Ao gerar o banco de dados HSQLDB, ser criada uma pasta
chamada db e dentro dela estaro os arquivos do banco de
dados. Esta pasta ser gerada um nvel acima do pacote dos
arquivos fontes da aplicao, ou seja, no mesmo nvel em que
voc deve ter o pacote lib, veja na figura 2.
Quem utilizar um banco de dados no modo servidor, como o
Mysql ou outros, algumas vezes ser necessrio criar o banco
de dados manualmente no gerenciador, para ento rodar a
classe GeraBanco, que ela ir criar as tabelas.
5. Classe de Conexo
Trabalhando com JPA/Hibernate, teremos uma classe de
conexo diferente do que temos quando criamos uma conexo
direta por JDBC. No caso da JPA devemos criar uma classe
conforme a listagem 3. Essa classe vai ler as configuraes do
arquivo persistence.xml e configurar uma fabrica de
conexes para o sistema. Sempre que for necessria uma
conexo, faremos uma chamada ao mtodo esttico
getEntityManager().
12345678910111213141516171819
package br.mb.tutorialHibernateJpa.agenda; import org.hibernate.cfg.Configuration;import org.hibernate.ejb.Ejb3Configuration;import org.hibernate.tool.hbm2ddl.SchemaExport; public class GeraBanco { public static void main(String[] args) { Ejb3Configuration cfg = new Ejb3Configuration(); //agenda eh o nome do persistence-unit no persistence.xml. cfg.configure("agenda", null); Configuration hbmcfg = cfg.getHibernateConfiguration(); SchemaExport schemaExport = new SchemaExport(hbmcfg); schemaExport.create(true, true); }}
?
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 5/23
Listagem 3. Classe EntityManagerUtil
6. Classe GenericDao
Vamos criar uma classe genrica para os mtodos insert, update
e delete, e algumas consultas que podem ser padro para vrias
entidades, veja na listagem 4.
Listagem 4. Classe GenericDao
12345678910111213141516
package br.mb.tutorialHibernateJpa.dao; import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence; public class EntityManagerUtil { private static EntityManagerFactory emf; public static EntityManager getEntityManager() { if (emf == null){ emf = Persistence.createEntityManagerFactory( } return emf.createEntityManager(); }}
123456789101112131415161718192021222324252627282930313233343536
package br.mb.tutorialHibernateJpa.dao; import org.hibernate.Session;import org.hibernate.criterion.Restrictions; import javax.persistence.EntityManager;import javax.persistence.EntityTransaction;import javax.persistence.PersistenceContext;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.util.List; public class GenericDao { @PersistenceContext(unitName = "agenda") private final EntityManager entityManager; private final Class persistentClass; public GenericDao() { this.entityManager = EntityManagerUtil.getEntityManager(); this.persistentClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[ } public EntityManager getEntityManager() { return entityManager; } protected void save(T entity) { EntityTransaction tx = getEntityManager().getTransaction(); try { tx.begin(); getEntityManager().persist(entity); tx.commit(); } catch (Throwable t) {
?
?
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 6/23
373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
t.printStackTrace(); tx.rollback(); } finally { close(); } } protected void update(T entity) { EntityTransaction tx = getEntityManager().getTransaction(); try { tx.begin(); getEntityManager().merge(entity); tx.commit(); } catch (Throwable t) { t.printStackTrace(); tx.rollback(); } finally { close(); } } protected void delete(T entity) { EntityTransaction tx = getEntityManager().getTransaction(); try { tx.begin(); getEntityManager().remove(entity); tx.commit(); } catch (Throwable t) { t.printStackTrace(); tx.rollback(); } finally { close(); } } public List findAll() throws Exception { Session session = (Session) getEntityManager().getDelegate(); return session.createCriteria(persistentClass).list(); } public T findByName(String nome) { Session session = (Session) getEntityManager().getDelegate(); return (T) session.createCriteria(persistentClass) .add(Restrictions.eq("nome", nome).ignoreCase()).uniqueResult(); } public T findById(long id) { Session session = (Session) getEntityManager().getDelegate(); return (T) session.createCriteria(persistentClass) .add(Restrictions.eq("id", id)).uniqueResult(); } private void close() { if (getEntityManager().isOpen()) { getEntityManager().close(); } shutdown(); } private void shutdown() { EntityManager em = EntityManagerUtil.getEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); em.createNativeQuery("SHUTDOWN").executeUpdate(); em.close(); }
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 7/23
A anotao @PersistenteContex() indica qual classe ser
responsvel pela persistncia dos dados. A varivel
persistentClass utilizada para termos acesso a entidade que
est sendo executada no momento. Utilizamos o tipo genrico na
classe, e atravs do tipo genrico que obtemos a entidade
para utiliz-la nas consultas, veremos mais a frente.
No construtor da classe criamos um objeto EntityManager,
que nos dar acesso ao mtodos necessrios, e obtemos a
entidade que est utilizando a classe no momento.
Nos mtodos save, update e delete, precisamos criar uma
transao, abrir est transao e ento executar o que
queremos fazer. No caso do mtodo save(), utilizamos o persist(),
que recebe como par metro um objeto e o framework executa
um insert atravs dele. A grande vantagem que no
precisamos nos preocupar com o SQL de insert, update ou
delete, s passamos o objeto e o framework faz o resto.
Depois da execuo, se tudo ocorrer bem executado um
commit na transao do banco de dados e ento um close
chamado para fechar a comunicao com o banco de dados.
Uma observao para quem no est utilizando o HSQLDB, o
mtodo shutdown() no deve ser utilizado, este mtodo
utilizado apenas no HSQLDB. No artigo JDBC com Banco de
Dados Standalone eu falo sobre isso.
Nas consultas foi utilizada a API Criteria, uma forma diferente de
fazer o select quando utilizamos orientao objetos e no
objetos relacionais. Outra forma que pode ser utilizada o HQL,
um dialeto SQL para o Hibernate, uma consulta muito parecida
com o SQL, porm se trabalha com objetos e seus atributos e
no com tabelas e colunas.
Quando utilizamos Criteria, precisamos indicar qual a entidade
que far a consulta, por isso, utilizamos a varivel
persistentClass, para passarmos para o mtodo qual entidade
est sendo executada no momento da consulta. Seria como se
ele estivesse passando por par metro algo como isto:
Contato.class
7. Classe Contato
106 }
Back top
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 8/23
Nossa classe contato ter como atributos os campos da tabela
Contatos, mapeados em forma de anotaes. Atravs das
anotaes podemos passar todas as informaes que uma
coluna teria, como o tipo de dado, tamanho, nome, entre outros.
Listagem 5. Classe Contato
8. Classe ContatoDao
Criamos a classe GenericDao para ser herdadas pelos demais
daos, assim, vamos agora criar a classe ContatoDao, onde
estaro os mtodos mais especficos da classe. Veja na listagem
6.
Listagem 6. Classe ContatoDao
123456789101112131415161718192021222324
package br.mb.tutorialHibernateJpa.model; import java.sql.Date;import javax.persistence.*;import java.io.Serializable; @Entity@Table(name = "CONTATOS")public class Contato implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID_CONTATO") private Long id; @Column(name = "NOME") private String nome; @Column(name = "APELIDO") private String apelido; @Temporal(TemporalType.DATE) @Column(name = "DATA_NASCIMENTO") private Date dtNascimento; //gere os mtodos getters and setters}
12345678910111213141516171819
package br.mb.tutorialHibernateJpa.dao; import br.mb.tutorialHibernateJpa.model.Contato; public class ContatoDao extends GenericDao { public void salvar(Contato contato) { save(contato); } public void alterar(Contato contato) { update(contato); } public void excluir(long id) { Contato c = findById(id); delete(c); }
?
?
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 9/23
Veja que utilizamos herana nesta classe, herdando os mtodos
criados na classe GenericDao. Nossos mtodos salvar(),
alterar() e excluir() no possuem mais a criao do SQL que
ser executado no banco de dados, como no artigo anterior, e
sim uma chamada ao mtodo da classe GenericDao e l os
mtodos do EntityManager faro o trabalho.
9. Classe ContatoController
Pouqussimas alteraes sero feitas na classe controller em
relao a classe controller do artigo anterior. Apenas foram
alterados o nome do pacote do projeto, as excees que antes
eram SQLException para Exception e no mtodo listaContatos()
o retorno foi alterado de dao.findContatos() para dao.findAll(),
j que agora temos um mtodo genrico e no exclusivo para
contatos.
Essa uma das vantagens do padro MVC, ns podemos
modificar parte do projeto sem que influencie drasticamente em
outros pontos dele.
Listagem 7. Classe ContatoController
20 }
123456789101112131415161718192021222324252627282930313233
package br.mb.tutorialHibernateJpa.controller; import br.mb.tutorialHibernateJpa.dao.ContatoDao;import br.mb.tutorialHibernateJpa.model.Contato; import javax.swing.*;import java.sql.Date;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.List; public class ContatoController { private Date formatarData(String data) throws ParseException { DateFormat formatter = new SimpleDateFormat( return new Date( formatter.parse(data).getTime() ); } public void salvar(String nome, String apelido, String dtNascimento) Contato contato = new Contato(); contato.setNome(nome); contato.setApelido(apelido); contato.setDtNascimento(formatarData(dtNascimento)); new ContatoDao().salvar(contato); } public void alterar(long id, String nome, String apelido, String dtNascimento) Contato contato = new Contato(); contato.setId(id); contato.setNome(nome); contato.setApelido(apelido);
?
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 10/23
9. Classe ContatoFrame
A interface continua a mesma, uma interface como a da figura 3.
Figura 3 - Interface Contatos
A classe ContatoFrame sofreu alteraes mnimas, que foram
apenas, alterar as excees SQLException por excees do tipo
Exception. Faa essa alterao e nos casos dos mtodos que
tenham dois tipos de excees, deixe a Exception no ltimo
catch{}.
Essa classe no foi postada no artigo, mas voc pode peg-la
no tutorial anterior, acessando Utilizando Swing com Banco de
Dados, e claro, no se esquea de alterar o nome do pacote e
dos imports de ContatoController e Contato.
Concluso
343536373839404142434445464748495051525354555657
contato.setDtNascimento(formatarData(dtNascimento)); new ContatoDao().alterar(contato); } public List listaContatos() { ContatoDao dao = new ContatoDao(); try { return dao.findAll(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, "Problemas ao localizar contaton" } return null; } public void excluir(long id) throws Exception { new ContatoDao().excluir(id); } public Contato buscaContatoPorNome(String nome) ContatoDao dao = new ContatoDao(); return dao.findByName(nome); }}
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 11/23
0ShareTweet 0 1
Injeo de Spring 3 MVC
Este tutorial demonstrou como configurar e criar um projeto
utilizando JPA com Hibernate. Fazendo uma comparao com o
tutorial Utilizando Swing com Banco de Dados, onde utilizamos
conexo direta com JDBC e utilizvamos PreparedStatement e
ResultSet, e os SQLs para consultas e demais mtodos com
banco de dados, o framework Hibernate nos facilita muito nesse
ponto.
Tambm podemos comparar como vlido separar as camadas
da aplicao utilizando o padro MVC, assim, facilita muito a
manuteno dos cdigos.
Saiba mais
Criteria
http://download.oracle.com/javaee/6/tutorial/doc/gjitv.html
Genricos em Java
http://en.wikipedia.org/wiki/Generics_in_Java
HQL
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html
Criteria com hibernate
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querycriteria.html
JPA http://www.oracle.com/technetwork/articles/javaee/jpa-
137156.html
Hibernate Annotations
http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html
Graphical User Interface
http://download.oracle.com/javase/tutorial/ui/index.html
Tags: entitymanager | hibernate | hsqldb | java | jdbc | jpa |
swing
Short Link: http://bit.ly/16hnKzv
Related Posts
Gosto 0
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 12/23
Dependncias
com Guice (DI)
com Validator
e Converter
JTable com
Banco de
Dados
Utilizando
Swing com
Hibernate
(SessionFactory)
64 comments
Leave a message...
Newest Share
Reply
James Daniel 4 months ago
Exatamente, Mrcio! Realmente eu estava utilizando o
mesmo DAO para inserir e depois fazer uma consulta
com findBy(). Eu pensava em reutilizar o DAO para
economizar objetos na memria e por comodidade
(rs). Na sua opinio vale a pena reutilizar o DAO para
vrias operaes ou sempre usar um para cada ?
Existe alguma vantagem em cada uma dessas
abordagens ?
Desculpe a demora para responder.
Att.,
James
Reply
MBallem 4 months ago James Daniel
Ol James. No existe diferena em relao a
performance. Seria mais relacionado
individualmente ao padro de seus projetos.
Escolha uma forma de usar e siga em frente.
James Daniel 4 months ago
Obrigado pela pronta resposta, Mrcio. Estou longe do
meu computador agora, mas assim que chegar vou
testar o que voc me passou.
0
Share
Share
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 13/23
Reply
testar o que voc me passou.
Eu tinha feito uma classe para testar uma insero
seguida de uma consulta (findById) usando o mesmo
DAO. Assim que estiver perto do meu micro testo e
retorno.
Obrigado,
James
MBallem 4 months ago
Ol James!
O commit() no fecha a sesso. O que pode estar
acontecendo que depois de salvar o objeto, voc
est tentando de alguma maneira usando o mesmo
objeto EntityManager e acontece o erro dizendo que o
EntityManager j est fechado.
Depois de salvar, voc precisa criar uma nova
instancia do Dao para que ele crie um novo objeto
EntityManager e assim, acredito que no ser lanada
a exceo.
Estou levando em considerao o exemplo do meu
cdigo. Quando voc cria uma instancia do Dao
criado um EntityManager e depois de salvar um objeto
esse EntityManager fechado. Ento, nessa instancia
do Dao voc no ter mais acesso ao EntityManager
porque ele foi fechado. Dai precisa criar uma nova
instancia do Dao para usar o EntityManager
novamente.
Voc pode mudar isso, tentando fazer essa alterao
no cdigo:
[sourcecode language="java"]
public GenericDao() {
//remova o entitymanager do construtor e passe ele
para o mtodo getEntityManager().
//this.entityManager =
EntityManagerUtil.getEntityManager();
this.persistentClass = (Class)
((ParameterizedType)
getClass().getGenericSuperclass()).getActualTypeArguments()
[0];
}
public EntityManager getEntityManager() {
return EntityManagerUtil.getEntityManager();
}
Share
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 14/23
Reply
}
[/sourcecode]
Reply
James Daniel 4 months ago
Marcio, consegui resolver fazendo isto comentando
no mtodo close() no cdigo do GenericDao:
protected void save(T entity) {
EntityTransaction tx =
getEntityManager().getTransaction();
try {
tx.begin();
getEntityManager().persist(entity);
getEntityManager().flush();
tx.commit();
} catch (Throwable t) {
t.printStackTrace();
tx.rollback();
} //finally {
//close();
//}
}
Suspeito que o close() est sendo feito aps o
commit() automaticamente. Pode ser por isso que ele
acusava o erro aps eu tentar fechar manualmente.
Att.,
James
James Daniel 4 months ago
Fala Marcio! Antes de mais nada, parabns pelo
excelente tutorial!
Eu tentei inserir aqui com MySQL usando uma tabela
chamada Usuario [ id, login, senha]
Ele grava no banco mas sempre d o erro
"EntityManager is Closed" conforme abaixo:
Hibernate: insert into db_piloto.usuario (login, senha,
id_usuario) values (?, ?, ?)
Exception in thread "main"
java.lang.IllegalStateException: EntityManager is
closed
at
org.hibernate.ejb.EntityManagerImpl.getSession(EntityManagerImpl.java:89)
Share
Share
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 15/23
Reply
org.hibernate.ejb.EntityManagerImpl.getSession(EntityManagerImpl.java:89)
at
org.hibernate.ejb.AbstractEntityManagerImpl.getDelegate(AbstractEntityManagerImpl.java:1096)
at
br.com.coldsoft.projetos.piloto.dao.GenericDao.findById(GenericDao.java:87)
at
br.com.coldsoft.projetos.piloto.dao.UsuarioDaoT.main(UsuarioDaoT.java:18)
J viu isso antes? Tem alguma dica para esse erro
no ocorrer mais ?
Muito Obrigado,
James
Reply
Vera 4 months ago
This post is truly a nice one it helps new net visitors,
who are
wishing in favor of blogging.
Reply
MBallem 4 months ago Vera
Thank you Vera!
Reply
MBallem 9 months ago
Ol Hs. Faa o download do projeto no link que
disponibilizei pelo github no final do tutorial e importe
as bibliotecas necessrias atravs do maven.
Reply
Hs 9 months ago
Ol, poderia disponibilizar novamente o pacote com
as bibliotecas?
Agradeo.
Reply
Rodrigo 11 months ago
Ok obrigado pela ajuda, tenho certeza que ajudou
muitos iniciantes, grande abrao
MBallem 11 months ago
No Rodrigo, no deixara mais lento. O log serve para
voc ter certas informaes do funcionamento do seu
sistema, principalmente para te informar erros
ocasionados no processamento do seu aplicativo.
Share
Share
Share
Share
Share
Share
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 16/23
Reply
ocasionados no processamento do seu aplicativo.
Reply
Rodrigo 11 months ago
Mas caso eu no coloque, pode deixar o sistema mais
lento?
Reply
MBallem 11 months ago
oi Rodrigo, isso no erro, aviso. Ele pede que voc
utilize um arquivo de configurao para log. Isso no
obrigatrio, mas caso queira incluir, de uma lida aqui>
http://logging.apache.org/log4...
Reply
Rodrigo 11 months ago
Corrigi o problema de salvar dados, parece esta tudo
funcionando. Mas ainda persisti o erro que citei acima
Reply
Rodrigo 11 months ago
Obrigado mesmo cara, desculpa at ta ai
encomodando demais.., Tipo funcionou, crio a tabela
mas ainda surge o erro >>
log4j:WARN No appenders could be found for logger
(org.hibernate.type.BasicTypeRegistry).
log4j:WARN Please initialize the log4j system properly.
Pede pra min inicializar o sistema log4j
corretamente.., no entendi porque, e tambm no
est salvando dados na tabela
Boa noite
Reply
MBallem 11 months ago
Rodrigo, coloquei nesse servidor de arquivos:
http://www.4shared.com/folder/...
Rodrigo 11 months ago
Eu li sobre o erro, baixei as api's que dizia que
resolvia o problema mas mesmo assim persisti o
erro. No tem como voce me disponibilizar os jar's
que voce usou no seu projeto?
Agradeo desde j, abrao
Share
Share
Share
Share
Share
Share
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 17/23
Reply
Agradeo desde j, abrao
Reply
MBallem 11 months ago
Rodrigo, parece que o problema agora ficou mais
visvel, acredito que seja problema com a biblioteca
slf4j, conforme informa a exceo:
org.slf4j.impl.StaticLoggerBinder.
Segundo relatado no link
http://www.slf4j.org/codes.htm..., voc pode entender
mais sobre esse erro.
Rodrigo 11 months ago
Baixei todas as verses que esto no pom.xml e
persisti o erro >>
SLF4J: Failed to load class
"org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger
implementation
SLF4J: See http://www.slf4j.org/codes.htm... for
further details.
log4j:WARN No appenders could be found for logger
(org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "AWT-EventQueue-0"
java.lang.NoSuchMethodError:
org.hibernate.cfg.AnnotationConfiguration.addProperties(Ljava/util/Properties;)Lorg/hibernate/cfg/AnnotationConfiguration;
at
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:756)
at
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:191)
at
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:253)
at
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:125)
at
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:78)
at
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at
jpaTesteSwing.Dao.EntityManagerUtil.getEntityManager(EntityManagerUtil.java:12)
at jpaTesteSwing.Dao.GenericDao.
(GenericDao.java:21)
at jpaTesteSwing.Dao.ProdutoDao.
(ProdutoDao.java:8)
at
Share
Share
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 18/23
Reply
at
jpaTesteSwing.Controller.ProdutoController.salvar(ProdutoController.java:12)
at
jpaTesteSwing.View.FrameCadastro.onClickSalvar(FrameCadastro.java:51)
at
jpaTesteSwing.View.FrameCadastro$1.actionPerformed(FrameCadastro.java:41)
Reply
Rodrigo 11 months ago
Ah no tinha visto kk, vlw
Reply
Rodrigo 11 months ago
Sim entendo, mas onde voce disponibilizou para
download?
Reply
MBallem 11 months ago Rodrigo
No final do artigo, tem um link para o PDF do
artigo e outro link para repositrio github, onde
voc pode fazer o download.
Reply
MBallem 11 months ago
Rodrigo, esse tipo de erro acontece quando tem
incompatibilidade entre as verses das bibliotecas.
Voc baixou as bibliotecas ou est usando as listadas
no arquivo pom.xml que disponibilizei no projeto para
download?
Rodrigo 11 months ago
Boa noite, depois de eu adicionar todas as anotaes
e bibliotecas necessrias estora o seguinte erro>>
log4j:WARN No appenders could be found for logger
(org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "AWT-EventQueue-0"
java.lang.NoSuchMethodError:
org.hibernate.cfg.AnnotationConfiguration.addProperties(Ljava/util/Properties;)Lorg/hibernate/cfg/AnnotationConfiguration;
at
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:756)
at
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:191)
at
org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:253)
Share
Share
Share
Share
Share
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 19/23
Reply
at
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:125)
at
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:78)
at
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at
jpaTesteSwing.Dao.EntityManagerUtil.getEntityManager(EntityManagerUtil.java:12)
at jpaTesteSwing.Dao.GenericDao.
(GenericDao.java:21)
at jpaTesteSwing.Dao.ProdutoDao.
(ProdutoDao.java:8)
at
jpaTesteSwing.Controller.ProdutoController.salvar(ProdutoController.java:12)
at
jpaTesteSwing.View.FrameCadastro.onClickSalvar(FrameCadastro.java:51)
at
jpaTesteSwing.View.FrameCadastro$1.actionPerformed(FrameCadastro.java:41)
...
Seu site timo, turtorial excelente que me ajudou
muito,,
agradeo de puder me ajudar. Abrao
Reply
MBallem 11 months ago
Ok Rodrigo, legal que resolveu.
Reply
Rodrigo 11 months ago
ae, esquece ja resolvi esse problema..
Reply
Rodrigo 11 months ago
Ola, ta estorando um erro aqui, acho que tem a ver
com a mesma anotao que voce disse que esta
faltando, o erro >>
Caused by: java.lang.ClassNotFoundException:
org.hibernate.cfg.AnnotationConfiguration
o erro estora na linha>>
emf =
Persistence.createEntityManagerFactory("testejpa");
MBallem 11 months ago
Share
Share
Share
Share
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 20/23
Reply
MBallem 11 months ago
Ol Rodrigo, parece que tem alguma anotao
faltando no cdigo. Mas voc pode gerar o banco de
dados sem usar essa classe GeraBanco. Atravs da
configurao "hibernate.hbm2ddl.auto" o Hibernate
capaz de gerar as tabelas na momento que voc
tentar executar algum mtodo de persistncia.
Reply
Rodrigo 11 months ago
Ae amigo, seguinte aqui no meu cdigo esta dando
um erro no metodo cfg.getHibernateConfiguration() ,
esse o erro que diz >>
"'The method getHibernateConfiguration() from the
type Ejb3Configuration refers to the missing type
AnnotationConfiguration'"
pode me ajudar? Obrigado.
Reply
MBallem a year ago
Hello Argyria! In actually I didn't have any problem with
hackers. But, in the wordpress platform, you can do
backup of your posts and comments in the panel
control: tools/export.
Reply
Argyria a year ago
Hi there! I just wanted to ask if you ever have any
problems with hackers? My last blog (wordpress) was
hacked and I ended up losing several weeks of hard
work due to no back up.
Do you have any methods to protect against hackers?
Reply
MBallem a year ago
Ok Alisson.
Por acaso voc tentou ao invs de trocar a verso do
banco, trocar apenas a verso do driver-jdbc?
Alisson a year ago MBallem
Ento, eu ia fazer isto, mas como percebi que
a verso do banco estava diferente, resolvi
atualizar antes j que o "padro" do nosso
sistema....
Share
Share
Share
Share
Share
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 21/23
Reply
sistema....
Acho que a soluo de trocar o driver tambm
iria funcionar no caso de continuar com a
verso 8.1 do banco... (ou ainda arrumar as
hqls).
Reply
MBallem a year ago
Ol Alisson, com HQL no porque no usamos HQL
no exemplo e sim Criteria. Talvez possa ser a verso
do banco, mas acho no tenho certeza. Qual banco
voc est usando? O HSQLDB mesmo?
Se for o HSQLDB, eu usei a verso 1.8.0 ->
http://sourceforge.net/project...
Esse problema ocorre em todo o acesso ao banco ou
em uma ao especifica como salvar, alterar ou
alguma consulta?
Reply
Alisson a year ago MBallem
Me desculpe o engano... o que eu tentei
realmente dizer que tive este problema, mas
consegui resolver.
Nosso sistema utilizava banco postgresql 8.4
e o cliente instalou 8.1 ento gerou esse
erro,dai atualizamos e funcionou...
Reply
Alisson a year ago
Eu tive o mesmo seguinte problema: could not
execute native bulk manipulation query.
pode ser problemas com sua HQL ou a verso do
banco instalada...
http://coisasdetecnologia.com....
Reply
Eliza Helena a year ago
Ok. Obrigada pela dica.
MBallem a year ago
Ol Eliza Helena!
Acredito que no seja possvel salvar como voc est
querendo. O que voc poderia fazer salvar em
campos varchar ao invs de date/datetime/timestamp.
Share
Share
Share
Share
Share
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 22/23
Reply
Aqui nesse link: http://dev.mysql.com/doc/refma...
tem os tipos de datas que o MySQL salva, olhe bem
no final da pgina. Veja que os formatos so apenas
aqueles, no possvel modificar ao salvar.
Se optar por usar varchar, voc pode ter dois campos
na tabela, uma para a data dd/mm e outro para a hora
hh:mm.
Reply
Eliza Helena a year ago
Continuei pesquisando e vi que essa funo no
serve para salva data e hora no banco e sim apenas
para apresentar. Mas teria alguma forma de eu salvar
as datas e horas em outro formato que no o padro
do MYSQL DATETIME?
Eliza Helena a year ago
Gostaria primeiramente de parabeniz-lo pelo site.
Para pessoas iniciantes em programao, assim
como eu, suas explicaes so de grande valia e
aproveitamento. Estou com problemas e gostaria de
saber se voc poderia me ajudar.
O meu programa tem dois atributos (startTime e
endTime) do tipo DateTime no mysql e do tipo Date
no java. No entanto o formato padro para salvar
datas/horas no mysql yyyy/MM/dd hh:mm:ss. Para o
Share
Share
Pages
Home
Author
Magazines
List of Posts
Popular Posts
Manipulando Arquivo
Txt com Java
Ler dados do teclado
com a classe Scanner
Chat Multi Usurios com
Socket
Utilizando Swing com
Banco de Dados
Enviando email com a
API JavaMail
Your email Address...
Subscribe
Email Subscription
Inscreva-se
para receber
por e-mail um alerta sobre
novas postagens.
Junte-se a 68 outros
seguidores.
-
18/09/13 Utilizando Swing com JPA/Hibernate
www.mballem.com/post/utilizando-swing-com-jpahibernate 23/23
Copyright 2011-2013 - MBallem | Programando com Java - Theme by MyThemeShop, edited by
mballem.com
Back to Top