Para auxiliar quem está começando com algum projeto resolvi explicar algumas poucas anotações para realizar o mapeamento de entidades utilizando JPA e Hibernate. Para se realizar a modelagem de classes persistentes e da base de dados pode se utilizar as anotações do JPA e do Hibernate.
Uma das anotações mais utilizadas é a anotação @Entity que define que aquela classe anotada deve ser uma entidade persistida na base de dados. Uma vez utilizada esta anotação, todos os métodos gets e sets e campos (dependendo do seu tipo de acesso) são descobertos e são gerados mapeamento para estas propriedades no banco de dados. Cada uma destas propriedades então gera uma coluna na tabela com o nome da entidade. Para que uma propriedade não seja persistida deve se utilizar a anotação @Transient.
Para se mapear objetos complexos devem ser usadas as anotações @OneToOne, @OneToMany, @ManyToOne e @ManyToMany. Quando mapeamos objetos com o tipo @ManyToMany o próprio JPA é responsável por gerar a tabela entre os dois objetos.
Quando se mapeia objetos deve se definir a política de quando estes objetos devem ser buscados. Normalmente quando se busca um objeto os outros objetos nem sempre precisam ser exibidos e buscá-los no banco causaria uma perda de desempenho indesejável. Um exemplo seria uma busca de pessoas que somente queremos mostrar seus dados e não seu endereço. Para este problema podemos mapear a propriedade como LAZY que indica que o objeto mapeado não é buscado inicialmente e sim somente depois dela ser necessária. Para isto definimos na anotação de mapeamento o trecho fetch = FetchType.LAZY. Para colocar propriedades simples LAZY deve se utilizar a seguinte anotação @Basic(fetch=FetchType.LAZY).
Para constantes únicas como, por exemplo, CPF de uma pessoa é interessante se utilizar a seguinte anotação @Table (uniqueConstraints = @UniqueConstraint ( columnNames = { "cpf" })). Para determinar que uma propriedade não deva ser nula deve-se utilizar a anotação @NotNull. Outra anotação importante é a anotação @NotEmpty que verifica se alguma propriedade do tipo String não é vazia. Para se determinar o tamanho máximo e mínimo de um campo do tipo String pode se utilizar a anotação @Length(min=3, Max=100) e para se determinar qual o intervalo válido de valores de campos inteiros pode se utilizar a anotação @Range(min=12, max=12).
Para propriedades que podem ser validadas com expressões regulares deve se utilizar a seguinte anotação @Pattern(regex="expressão regular") e para validação de email pode se utilizar a anotação @Email. Para outras validações mais complexas podem-se utilizar as anotações @AssertTrue, @AssertFalse, @Valid.
As validações devem ser utilizadas sempre que possível, para que o modelo esteja sempre coerente e correto.
É isto aí pessoal. Existem várias outras anotações de mapeamento que não foram citadas, mas em um outro momento iremos falar delas. Quaisquer problemas enviem mensagem.
3 comentários:
Para que serve essa marcação??
@SuppressWarnings("unchecked")
Tudo bom Ariadnes?
Desculpe a demora para responder. A marcação @SupressWarnings serve para desabilitar a geração de warnings (alertas) pelo compilador.
Ele desabilita o Warning no contexto que a anotação foi definida podendo ser a nível de método ou classe.
Normalmente eu utilizo para o compilador parar de reclamar de algumas conversões de Collections com Generics.
Qualquer problema avise...
[]s,
Samuel
tranquilo, Mestre!!!
Obrigada! :)
Postar um comentário