As dependências do Hibernate 3.5 e 3.6
Postado em 14. abr, 2010 por Paulo Silveira em Java
O primeiro desafio de um iniciante em Hibernate, antes mesmo de fazer um tutorial prático, como o disponível na apostila FJ-21 da Caelum, é organizar as dependências necessárias. Até o Hibernate 3.3, a maneira a qual ele era distribuído dava trabalho pra quem precisasse usar a JPA: além do zip contendo o hibernate, era necessário fazer o download de um outro jar contendo a implementação do EntityManager e ainda outro contendo as anotações e interfaces da JPA.
A versão 3.5, como a 3.6, além de trazer uma implementação da JPA2, juntou todos esses pacotes em um só. A documentação está ainda mais completa, assim como a parte explicando o processo de setup do seu primeiro projeto. Apesar disso, como se pode ler na documentação, ela é feita assumindo que você esteja usando o maven. Muitos iniciantes em Java ainda tem dificuldades pra encarar o Maven, ou há ainda quem prefira usar o Ant, Ivy ou gerenciar as dependências manualmente. Quais dependências preciso então para rodar uma aplicação com Hibernate 3.5/3.6?
Para facilitar seu trabalho, deixamos aqui um zip com todas essas dependências do Hibernate 3.5.0, além de um arquivo de configuração para o Log4J, um hibernate.cfg.xml e jars opcionais.
Ou então você pode juntar esses jars seguindo o passo a passo: primeiramente precisa baixar a distribuição 3.5/3.6 a partir da página de downloads do hibernate no sourceforge. Ao descompactá-la, encontramos os seguintes arquivos e diretórios:

O hibernate3.jar é um jar contendo as classes fundamentais do Hibernate. Agora, dentro de lib, temos o diretório required, que são dependências que sempre precisaremos utilizar junto com o Hibernate. Todas essas 6 dependências são necessárias:

Dentro de lib, ainda precisamos do jar hibernate-jpa-2.0-api-1.0.0.Final.jar que está na pasta jpa para poder utilizar as anotações do Java EE. Caso você va usar o MySQL, também precisa fazer o download do driver JDBC para ele.
Ainda não terminou. Precisamos do nosso logging funcionando. Se você tentar executar algum exemplo agora, vai receber o conhecido Exception in thread “main” java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder. O SL4J, usado pelo Hibernate, é uma casca para as outras ferramentas de logging, e precisa então de um jar que indique qual logger será utilizado como backend. Na página de distribuições do SL4J você deve baixar a versão correspondente que está usando, seria a 1.5.8 no caso do Hibernate 3.5.0, e pegar o adaptador slf4j-log4j12-1.5.8.jar. Para o Hibernate 3.6.2, é necessário o slf4j-log4j12-1.6.1.jar. Também precisamos do jar do Log4J 1.2.x.
Principais dependências opcionais
Usar o Hibernate facilita muito o desenvolvimento com banco de dados, porém para uma performance e escalabilidade adequada é necessário ficar atento em alguns pontos fundamentais, e também simples, para que ele não se torne um gargalo na sua aplicação. Dentro do diretório optional, destaco como essenciais o c3p0 para pool de conexão e o ehcache para second level cache. O ehcache necessitará do commons-logging por sua vez.
Para você tirar todo o poder da JPA 2, vai querer também usar a api de meta modelos, e pra isso precisa do gerador de modelos do Hibernate.
Paulo Silveira
Mais sobre o autor
37 Respostas para “As dependências do Hibernate 3.5 e 3.6”
Trackbacks/Pingbacks
-
-
maio 12, 2010
[...] contato. Nome, endereco e telefone são exemplos mais simples de caracteristicas de um contato. Aqui tem um post bem legal sobre as dependencias do Hibernate 3.5, além do download dos jars [...]
-
-
junho 6, 2010
[...] para montar o ambiente de trabalho necessário para usar o Hibernate com as Annotations, recomendo este tutorial, do blog da Caelum, que oferece um pacote com todas as dependências necessárias e mais umas [...]
-
-
dezembro 21, 2010
[...] As dependências do Hibernate 3.5por Paulo Silveira, em 14/04 [...]
-
-
fevereiro 7, 2012
[...] partir da versão 3.5, o Hibernate tornou-se uma implementação certificada para a JPA2 (JSR 317), lançada oficialmente [...]
ASSINE NOSSO RSS




Danilo
14. abr, 2010
O Edson Gonçalves vem fazendo um trabalho em ensinar a JPA já incluindo a versão 2.0 em seu blog, ao qual fez um post ensinando sobre a utilização do Hibernate 3.5 antes da versão final. Caso alguém esteja iniciando, recomendo:
http://www.edsongoncalves.com.br/category/jpa-2-0/
seufagner
16. abr, 2010
Paulo
Porque não o Infinispan para 2LC ?
http://infinispan.blogspot.com/2009/04/infinispan-start-of-new-era-in-open.html
http://bigdatamatters.com/bigdatamatters/2009/09/infinispan-vs-gigaspaces.html
Paulo Silveira
17. abr, 2010
@danilo excelente link!
@Fagner todos o providers de second level cache do hibernate são ótimos. não excluo nenhum. Sempre tive excelentes resultados com ehcache, e o jar dele já vem com o hibernate. Quando precisamos de um cache maior e distribuído, ai não tem como fugir do JBoss Cache, Infinispan, ou ainda memcached “na mao” ou do antiquissimo SwarmCache pra quem lembra.
Garcia
18. abr, 2010
O suporte a Infinispan foi uma das melhores features do H3.5, embora o JBoss Cache sempre me atendeu muito bem para caches distrubuídos.
Paulo, na sua segunda imagem está faltando o DOM4J, que infelizmente é uma dependência necessária, mesmo que você não use os infames HBMs.
E complementando, se você está usando um appserver que suporte JEE6 vocẽ não precisará do hibernate-jpa-2.0-api.
Porém é uma pena você engessar o post no LOG4J, já que o SLF4J permite que você use outras implementações de logging.
Paulo Silveira
18. abr, 2010
@Garcia
Verdade, o DOM4J é obrigatório, mas não entendi seu comentário. Ele está sim lá na pasta required e é o 3o icone que você pode ver na imagem. Ele também está no zip que disponibilizei.
Verdade também sobre a API da JPA, mas nesse caso ele não vai precisar de nenhum jar do Hibernate, já que se for pra usar JPA2 num container Java EE6 ele é obrigado a vir com uma implementação (exemplo, no JBoss você não precisa de nenhum dos jars que citei aqui)! Lembrando que esse post é pra quem está começando com Hibernate standalone.
Não quero engessar não! Tanto o Log4J, Ehcache e o C3P0 tem suas alternativas. Aqui é apenas uma sugestão pra quem está começando. Quanto ao Log4J, é uma pena até agora ele não tenha suporte a java 5. Sem varargs gera um problema grande de early evaluation da mensagem de log e criando aquele idiomistmo de if (log.isDebugEnable())
Garcia
18. abr, 2010
Paulo, é verdade, acho que eu olhei um pouco rápido e não notei o jar alí. My bad, sorry. Olhei correndo e me confundo mesmo.
Abraços
Rafael Carneiro
18. abr, 2010
Parabéns por mais um excelente post!
Eu e o Paulo Sobreira elaboramos um hibernate-blank e disponibilizamos no endereço http://code.google.com/p/hibernate-blank/
Mais uma fonte para aprendizado.
Mauricio
28. abr, 2010
Parabéns pelo tutorial, muito didático e me ajudou bastante. Tive apenas um problema: mesmo importando a lib do c3p0 e configurando os parâmetros dele no hibernate.cfg.xml, continuo tendo a saída no console de:
INFO DriverManagerConnectionProvider:64 – Using Hibernate built-in connection pool (not for production use!)
Meu hibernate.cfg.xml está assim:
property name=”hibernate.c3p0.acquire_increment” 2
property name=”hibernate.c3p0.idle_teste_period”100
property name=”hibernate.c3p0.max_size”20
property name=”hibernate.c3p0.min_size”5
property name=”hibernate.c3p0.max_statements”5
property name=”hibernate.c3p0.timeout”100
Imagino que como no hibernate 3.2.x, apenas configurar estes parâmetros já é o suficiente para desligar o gerente de pool de conexões do hibernate, fazendo com que ele passe a usar o c3p0. Faltou alguma coisa??? No 3.5 agora é diferente?
Abraços.
Mauricio
29. abr, 2010
Engraçado! Quando mudo as configurações do log4j para as classes do hibernate para debug, a saida do console do meu eclipse indica que ele esta usando o c3p0. Mas quando mudo para info, aparece a famigerada:
INFO DriverManagerConnectionProvider:64 – Using Hibernate built-in connection pool (not for production use!)
Paulo Silveira
29. abr, 2010
oi mauricio! a partir do 3.3 precisa disso: property name=”hibernate.connection.provider_class” org.hibernate.connection.C3P0ConnectionProvider
Mauricio
30. abr, 2010
Olá Paulo, valeu, agora está tudo certo, o c3p0 assumiu a gerência do pool. Só que neste caso tem um furo no manual do que vem na versao 3.5.1, na página 37, logo depois de malhar o algoritmo de pool do Hibernate, ele recomendo o uso de um pool de terceiros, sugere o c3p0 e diz que para ativar o org.hibernate.connection.C3P0ConnectionProvider basta configurar as propriedades hibernate.c3p0.*. Era aí que eu estava vendido:) Valeu pela ajuda mais uma vez, resolveu direitinho meu problema.
Luiz Henrique
06. mai, 2010
galera valeu mesmo eu tinha perdido os meu jar.
outra coisa quando eu terminei o curso orientados objetos da caelum
eu peguei todos e do fj21 tbm….. alguem ainda tem essas pasta da caelum
para poder passar
agradeço desde já……
abração galera
Robson
19. mai, 2010
Show de bola esse post! Ajudou pra caramba! Os caras do hibernate tem que colocar isso lá viu. Parabéns!
Celso Romão
07. jul, 2010
Pessoal configurei o hibernate com as libs acima, quando executo aplicação pelo um método main, a aplicação funciona executo algumas consultas na base de Dados(MySQL).
O problema é que quando tento usar o HIbernate com estes jar no JBoss 5.1, ele dá erro quando lê o hibernate.config.xml.
Estou tentando configurar uma aplicação JSF(Richfaces) e HIbernate.
Alguém sabe quais libs que preciso?
Paulo Silveira
08. jul, 2010
Qual erro ele da Celso?
Usando o jboss, voce nao deveria colocar essas libs, ja que o container ejb ja as contem e pode dar problema de jar hell
Washington Machado
08. jul, 2010
O Paulo comentou sobre não precisar dessas libs caso utilize jboss…mas isso ocorre porque o jboss utiliza o hibernate como implementação da jpa?
E se for utilizar TomCat ou Glassfish? Também não preciso das libs?
Sou iniciante…se as questões não fizerem sentido desconsiderem…obrigado.
[]s
Paulo Silveira
09. jul, 2010
Ola Washington. A pergunta faz muito sentido: se voce usa Tomcat, precisará dos jars aqui. Se você usa um container Java EE completo, como o glassfish e o jboss, não precisa, e nem deve colocar esses jars.
Luciano
08. mar, 2011
Desculpe ressucitar o tópico mas quais seriam as dependências para o hibernate 3.6.0?
jabi
02. abr, 2011
Deculpe-me mais alguém poderia me ajudar estou tendo dificuldades para migrar pra versão 3.6 quais seria a versão correta do hibernate-annotations…
Levy
28. jun, 2011
Eu estou começando a usar o maven e antes do mesmo importava esses jars na unha, alguém poderia conferir se esta ok?
https://gist.github.com/1050921
Utilizei as mesmas versões dos jars do post.
Obrigado desde já.
Paulo Henrique - PH
26. jul, 2011
Paulo,
Os pacotes atuais do Hibernate não vêm mais com o ehcache.
Mas o que eu estou com dúvida mesmo é como utilizar o Hibernate com o Cache e o pool de conexões.
Se eu “disser” no hibernate.cfg que vou utilizar o C3P0 e o oscache, por exemplo, é bastante para que o Hibernate passe a fazer cache de segundo nível e utilizar o pool de conexões?
A pergunta é se existem configurações default caso eu não tenha determinado outras explicitamente. Ou se existe a exigência de configurações adicionais para utilizar essas ferramentas (C3P0 e oscache) além de citá-las no hibernate.cfg.
Thx,
PH
Paulo Silveira
26. jul, 2011
Oi Paulo!
No OSCache com certeza vai faltar configuracoes, como anotar quais entidades voce precisa de cache com @Cache, quais queries voce quer cachear com setCacheable(true), etc.
No C3P0, nao sei se já ha defaults para min, max, test_idle_connection, test_on_burrow, etc, mas é bom voce deixar explicito mesmo se houver.
Paulo Henrique
26. jul, 2011
Paulo,
Está ocorrendo uma exceção que acredito ser por causa do C3p0, mas não tenho certeza!
Você sabe o pq dessa exceção?
*****
org.hibernate.HibernateException: ‘hibernate.dialect’ must be set when no Connection available
at org.hibernate.dialect.resolver.DialectFactory.buildDialect(DialectFactory.java:106)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:152)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870)
at br.inf.bluestar.dao.conexao.HibernateUtil.(HibernateUtil.java:26)
at br.inf.bluestar.dao.AbstractDAO.(AbstractDAO.java:28)
at br.inf.bluestar.dao.UsuarioDAO.(UsuarioDAO.java:16)
at br.inf.bluestar.negocio.UsuarioNegocio.efetuarLogin(UsuarioNegocio.java:11)
at br.inf.bluestar.action.UsuarioAction.efetuarLogin(UsuarioAction.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
*****
Meu arquivo de configuração do Hibernate está assim:
oracle.jdbc.pool.OracleDataSource
jdbc:oracle:thin:@192.168.72.128:1521/xe
<!– jdbc:oracle:thin:@localhost:1521/xe –>
uniblue
uniblue
true
org.hibernate.dialect.OracleDialect
<!– create –>
org.hibernate.connection.C3P0ConnectionProvider
1
100
100
0
10
100
true
true
org.hibernate.cache.EhCacheProvider
<!– –>
<!– –>
Alguma dica para solucionar esse problema???
Paulo Silveira
26. jul, 2011
ta faltando configurar a propriedade hibernate.dialect. seu arquivo nao aparece direito por causa dos sinais de xml/html. coloca ele num http://pastebin.com/ pra gente ver
Paulo Henrique - PH
26. jul, 2011
Eu já tentei com e sem o dialeto mas nada:
http://pastebin.com/nF7Gcuyg
A maioria das linhas que estão comentadas eu testei com e sem o comentário!
Estou louco por uma solução!
Paulo Silveira
26. jul, 2011
Esta tudo certo, entao eu apostaria que o erro é o classpath. Onde voce colocou o arquivo? Ele precisa estar no seu WEB-INF/classes, na raiz, por exemplo.
Paulo Henrique - PH
26. jul, 2011
Ele estava dentro do src, como na apostila da Caelum
Coloquei na pasta que você falou acima e vou testar!
Thx!
Paulo Silveira
26. jul, 2011
se esta no src, deveria funcionar (se voce utilizar eclipse e o arquivo esta sendo copiando para o /web-inf/classes).
Paulo Henrique - PH
26. jul, 2011
Paulo, não tenho como agradecer o tempo que você gastou quebrando a cabeça comigo!
Muito obrigado!
Colocando o arquivo dentro do WEB-INF/classes funcionou.
Aqui no meu eclipse o arquivo apareceu, além da pasta citada, dentro de Java Resources e não do src (Que fica dentro do Java Resources).
Ainda não parei para analisar essa organização do Eclipse, mas pareceu ter diferença!
Dei uma limpada no .cfg e vou testar agora com as outras configurações.
Mais uma vez, muito obrigado!
Paulo Henrique - PH
26. jul, 2011
Só mais uma observação, com o ehcache tenho uma exceção lançada na hora que configuro o Hibernate!
Já com o oscache ele está configurando perfeitamente.
Baixei todas as bibliotecas recentemente logo estou com as últimas versões.
Estou com um mal pressentimento por não ter achado a biblioteca do ehcache nas libs que vieram com a última versão do Hibernate e essa exceção que está sendo lançada quando tento utiliza-la.
É um class not found de uma classe edu.emory.mathcs.backport.java.util.concurrent.BlockingQueue
Sabem o porquê dessa exceção?
Paulo Henrique - PH
26. jul, 2011
Prometo que é o último post!
Com o EhCache core 2.4.3 funcionou!!!
Leandro
20. out, 2011
Boa tarde. Existe uma maneira de juntar 2 projetos ORM em java(Eclipse Helios) em um só, sem alterar nenhum dos projetos, apenas utilizando os métodos? Exemplo, proj1 orm banco 1, proj 2 orm banco 2, proj 3 busca dados em proj 1 e em proj 2. Erro: org.hibernate.MappingException: Unknown entity: pkt.Classe. Hibernate só esta reconhecendo as classes de um dos projetos e não dos dois aos mesmo tempo. Obrigado.
Marcius
08. dez, 2011
Como configuro o Hibernate Validator com o H 3.6.8?? As anotations ,org.hibernate.validator.NotEmpty por exemplo, não existem mais.
Tem como eu continuar usando essas anottations no H3.6.8-Final?