Olá Pessoal, tudo bem?
No artigo de hoje vou relatar o que me motivou a modificar a versão do Hibernate que utilizo no projeto SeminariosCientificos abordado em sala de aula. Veja mais sobre esses pontos na continuação do artigo.
Motivação
O projeto estava utilizando 4.2.15.Final do Hibernate, versão do Hibernate liberada em Julho de 2014. Estamos em 2021… estava bem desatualizada! O que significa isso? Que poderiam haver brechas de segurança, classes depreciadas (descontinuadas), mudanças estruturais em pontos importantes como descreverei nos próximas partes.
Mas qual foi o motivo principal? Nessas ¨férias de verão¨ das aulas resolvi mudar o projeto para começar a utilizar a nova API de Data e Hora do Java 8 (Java Time), quando percebi, realizando os testes, que os campos que foram modificados de java.util.Date para java.time.LocalDate os quais ainda ficaram com a annotation @Temporal no mapeamento ORM estavam gerando o seguinte erro:
@Temporal should only be set on a java.util.Date or java.util.Calendar property: br.com.mauda.seminario.cientificos.model.Seminario.data
Assim resolvi como teste, remover a annotation @Temporal. Funcionou? Nao!!! Mas mudou o erro:
org.hibernate.HibernateException: Wrong column type in PUBLIC.PUBLIC.TB_SEMINARIO for column data. Found: date, expected: varbinary(255)
Isso me levou a refletir se a versão do Hibernate utilizada no projeto não funcionava com a versão 8 do Java. E realmente era isso! Bom então é hora de atualizar a versão da biblioteca do Hibernate. Nesse momento, ainda era dezembro de 2020, então consultei as últimas versões e a última versão estável na época era a 5.4.27.Final. Então bora atualizar!
Atualizando o Hibernate!
Para atualizar peguei a versão mais recente, 5.4.27.Final, e modifiquei no arquivo pom.xml do projeto. Abaixo temos a versão anterior:
1 2 3 4 5 |
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.2.15.Final</version> </dependency> |
Agora a versão atualizada:
1 2 3 4 5 |
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.4.27.Final</version> </dependency> |
finally {
Existem ainda outros pontos que foram necessárias mudanças no projeto para que tudo funcionasse corretamente. Essas alterações serão tratadas em artigos futuros!
Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!
Até um próximo post!
Leave a Reply