Persistência - Conceitos JPA/Hibernate

5 respostas
gRoOve

Boa noite galera, estou tentando desenvolver um projeto utilizando persistência de dados porém estou confuso com os conceitos, segue minha dúvida:

JPA(Java Persistence API) é uma especificação utilizada para persistência de dados, partindo desta definição tenho que ter um framework que atenda a esta especificação, ou seja, que a implemente, contudo lendo estes artigos do Edson Gonçalves percebi que é possível implementar utilizando ela mesmo?? A especificação é um framework também??

Não percebi o que estava escrito:

5 Respostas

Fernando_Generoso_da

Não…JPA é uma especificação, e não uma implementação. Além do Hibernate, que é um framework de persistência de dados E implementação da ESPECIFICAÇÃO JPA, tu pode utilizar outras implementações, como as implementações de referência, que para o JPA 1 é o toplink e para o JPA 2 é o EclipseLink.

Fernando

gRoOve

Obrigado por responder, depois que eu li com mais atenção percebi que era isso mesmo.

Outra coisa, eu posso usar como especificação o JPA e como framework o Hibernate, correto? Mas eu também posso usar o Hibernate “puro”, no caso fugiria a especificação da JPA ficando impossibilitado de utilizar outro framework(que não o Hibernate) caso fosse necessário, seria isso mesmo?

Fernando_Generoso_da

Sim, Tu pode utilizar JPA com a implementação do hibernate, ou apenas utilizar o framework hibernate. Com a segunda opção, tu nao teria mais compatibilidade, e não poderia trocar , sem ter algum esforço, a tua implementação.

Fernando

gRoOve

Obrigado pela resposta Fernando :slight_smile:

Como não tenho muita intimidade com esta tecnologia fiquei bem confuso quanto a configuração, pois pelo que li existem duas formas de configurar a entidade de persistencia: persitence.xml e o hibernate.cfg.xml.
No caso, o persitence.xml seria referente a especificação JPA e o hibernate.cfg.xml referente ao framework hibernate?

Miltex

Beleza ??? Velho !!!

Estou com essa mesma duvida …
Estou trabalhando em um projeto com GWT e Hibernate como a implementação da especificação JPA…

Neste caso eu tenho que configurar o persistence.xml ???
Quando utilizo o Hibernete com JPA não preciso do arquivo de config. hibernate.cfg.xml :?: é isso msm ???

A seguinte exceção está sendo lançada…

13/04/2012 17:09:12 org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
13/04/2012 17:09:12 org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.0.0.Final}
13/04/2012 17:09:12 org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
13/04/2012 17:09:12 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
13/04/2012 17:09:14 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
13/04/2012 17:09:14 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20
13/04/2012 17:09:14 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: true
13/04/2012 17:09:14 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/petshop]
13/04/2012 17:09:14 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=root, password=****, autocommit=true, release_mode=auto}
13/04/2012 17:09:15 org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
13/04/2012 17:09:15 org.hibernate.engine.jdbc.internal.LobCreatorBuilder useContextualLobCreation
INFO: HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
13/04/2012 17:09:15 org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
13/04/2012 17:09:15 org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
A criacao inicial do SessionFactory falhou !
javax.persistence.PersistenceException: [PersistenceUnit: ProjectJPAGWT] Unable to build EntityManagerFactory
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at br.milton.shared.model.JpaFactory.<clinit>(JpaFactory.java:21)
	at br.milton.server.ServicoCrudBdImpl.getLista(ServicoCrudBdImpl.java:34)
	at br.milton.server.ServicoCrudBdImpl.main(ServicoCrudBdImpl.java:44)
Caused by: org.hibernate.HibernateException: Error applying BeanValidation relational constraints
	at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:219)
	at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:126)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:295)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
	at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:76)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
	... 7 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:208)
	... 12 more
Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory
	at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:524)
	at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:119)
	... 17 more
Caused by: javax.validation.ValidationException: Unable to find a default provider
	at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:264)
	at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
	at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:521)
	... 18 more
Exception in thread "main" java.lang.ExceptionInInitializerError
	at br.milton.shared.model.JpaFactory.<clinit>(JpaFactory.java:26)
	at br.milton.server.ServicoCrudBdImpl.getLista(ServicoCrudBdImpl.java:34)
	at br.milton.server.ServicoCrudBdImpl.main(ServicoCrudBdImpl.java:44)
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: ProjectJPAGWT] Unable to build EntityManagerFactory
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at br.milton.shared.model.JpaFactory.<clinit>(JpaFactory.java:21)
	... 2 more
Caused by: org.hibernate.HibernateException: Error applying BeanValidation relational constraints
	at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:219)
	at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:126)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:295)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
	at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:76)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
	... 7 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:208)
	... 12 more
Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory
	at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:524)
	at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:119)
	... 17 more
Caused by: javax.validation.ValidationException: Unable to find a default provider
	at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:264)
	at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
	at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:521)
	... 18 more

Alguém já se deparou com esse problema ???

Da um help aí moçada . . .

Valew !!!
:roll:

Criado 4 de março de 2012
Ultima resposta 13 de abr. de 2012
Respostas 5
Participantes 3