Usando LocalDate(Java 8) no Hibernate4 / JPA 2.1

As novas classes da API de data do java 8 (LocalDate, LocalDateTime, YearMonth, etc) não possuem suporte padrão no mapeamento Hibernate 4/JPA 2.1 que seguem a especificação do Java EE 7, o que não está errado, pois o java EE 7 mantém a compatibilidade com a JDK7, com isso há algumas alternativas para utilizar essas … Continue lendo Usando LocalDate(Java 8) no Hibernate4 / JPA 2.1

Utilizando Persist e Merge do entityManager

Em tese, poderia ser dito que os métodos persist e merge são responsáveis por fazerem insert e update de objetos na base de dados, no entanto esse métodos fazem muito mais que isso, eles também refletem no estado das entidades no contexto da aplicação. Persist Segundo a especificação, "Torna a instância managed e persiste", ou … Continue lendo Utilizando Persist e Merge do entityManager

Executando métodos em eventos no ciclo de vida de entidades

Dentro do contexto do java EE é possível realizar alguns eventos baseados no ciclo de vida de uma entidade, como isso conseguimos fazer ações no objeto antes que ele seja inserido, atualizado, removido ou carregado. Isso é possível através dos callback methods para entidades. O JPA disponibiliza anotações para marcar em que momento(pre/post - antes/depois) … Continue lendo Executando métodos em eventos no ciclo de vida de entidades

Usando LocalDate do Java 8 no JavaEE7

No Java 8 foi disponibilizado a nova API de datas, java.time.*, a qual é baseada no JodaTime. Mas como utilizar essa API no contexto de javaEE ? Sabendo que o EE atual é 7, ou seja, possui suporte apenas até o jdk7. Para que isso seja possível, precisamos criar um conversor de atributo do JPA, … Continue lendo Usando LocalDate do Java 8 no JavaEE7

Id composto no JPA

Umas das formas de utilizar id(pk) composto no JPA é com EmbeddedId, segue abaixo um exemplo ilustrativo de como implementar o @EmbeddedId. FuncionarioId.java @Embeddable: Define que é uma classe de composição de Ids, ou seja, todos atributos definidos dentro da classe serão considerados como ids. Funcionario.java @EmbeddedId: Define que o atributo é o id da … Continue lendo Id composto no JPA

Criando Named query

Existem várias formas de realizar uma consulta em java, uma delas é através de NamedQuery que são consultas estáticas definidas na entidade. Como Definir uma NamedQuery @NamedQueries: Define uma área para criação de NamedQuery; @NamedQuery: Define uma NamedQuery; name: Define o nome da NamedQuery. Obs: por organização é bacana utilizar o Nome da entidade "." … Continue lendo Criando Named query

Mapeando Unique Constraint

Existem diversas validações a nível de banco para deixarmos o modelo mais seguro, uma delas é a unique Constraint, que determina uma regra para que o registro seja único. Para que o modelo esteja bem claro a nível de código e para podermos usar validações(ex: javax.validation.ConstraintViolation) é importante que a entidade seja configurada corretamente de … Continue lendo Mapeando Unique Constraint