Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Aula 7 - datas - Java8 LocalDate

Bom, como estou utilizando java 8 em minha máquina, quis tirar proveito da nova API de datas do java8. O que fiz foi o seguite:

dentro da classe produto, criei o campo como:

    @DateTimeFormat(pattern="dd/MM/yyyy")
    private LocalDate dataLancamento;

ao verificar, percebi que o hibernate 5.1.0 já possui suporte ao java8, então atualizei meu pom.xml:

removi as dependencias do hibernate 4 e inclui as do 5.

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.1.0.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.1.0.Final</version>
    </dependency>

verifiquei na documentação ser necessário a inclusão de:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-java8</artifactId>
        <version>5.1.0.Final</version>
    </dependency>

e também acho que ao mudar pra 5 deixou de ser dependecia, portanto inclui:

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.0.0.GA</version>
    </dependency>

Isso funcionou para mim. No banco ele salvou como tipo Date. O mapeamento o já é implícito, segundo o guide user, não sendo necessário a anotação @Temporal.

Quero trabalhar com a nova api de datas java 8, pois num projeto pessoal terei que lidar com datas de forma mais profunda.

Os passos que fiz estão corretos?

Preciso tomar cuidado com alguma coisa a mais?

1 resposta
solução!

Olá Vinícius,

Aparentemente sim. Você já atualizou o que precisava para isso.

Lembre-se também que na tela, os componentes em geral esperam trabalhar com java.util.Date, então você poderá precisar fazer transformações. Porém, nada diferente do que já fazíamos para Calendar.

Um outro cuidado é que mesmo não precisando usar @Temporal, é sempre bom garantir o que você deseja. Pois com @Temporal você informa ao banco se deseja guardar a data, apenas a hora, ou os dois. Porém ele só funciona para Date e Calendar. Creio que o Hibernate tem alguma forma de fazer funcionar para Java 8.

No mais, tudo certinho. parabéns.

Abraço