Conceitos de Hibernate e JPA

 


Em artigos anteriores, abordamos o conceito de banco de dados, apenas com intuito de mostrar como funcionam as quatro operações básicas do banco dados. Neste artigo iremos um pouco mais além, como podemos implementar as quatro operações do banco de dados utilizando Hibernate e JPA que são duas ferramentas que são utilizadas para a configuração do banco de dados em um projeto Java.

JPA (Java Persistence API)

Para início de conversa, iremos começar nossa abordagem baseados no conceito de JPA (Java Persistece API), que se trata de uma especificação em Java, que permite que o usuário gerencia a persistência e mapeamento objeto-relacional. Essa especificação permite que os desenvolvedores utilizem apenas código em Java sem a necessidade de utilizar códigos em SQL diretamente.

Principais conceitos de JPA

Entity: E uma classe Java que mapeia uma classe Java no banco dados. Cada tabela que foi criada no banco de dados, deve está mapeada no código Java como mostra o código abaxo:

@Entity

@Table(name = "users")

public class User {

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private Long id;

 

    @Column(name = "username")

    private String username;

 

    @Column(name = "password")

    private String password;

}

O código acima mostra uma classe de modelo User utilizando anotações JPA para o mapeamento da tabela e das colunas do banco através das anotações @Entity, @Table, @Id, @GeneratedValues, @Column, que são responsáveis por indicar ao Java o que cada parte da classe significa para o banco de dados:

·       @Entity: Essa anotação indica que a classe deve ser mapeada para tabela do banco de dados

·       @Table: Especifica o nome da tabela que deve conter no banco de dados

·       @Id: Identifica a chave primaria da entidade

·       @GeneratedValue: Define como os valores da chave primaria serão gerados

·       @Column: Mapeia colunas do banco de dados.

Outro conceito importante é o de Persistence Unit, que se trata de um documento por nome de persistence.xml onde contém todas as configurações do banco de dados, como usuário, senha, nome da conexão. O código a seguir mostra uma configuração simples de um projeto.

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">

    <persistence-unit name="example-unit">

        <class>com.example.User</class>

        <properties>

            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/exampledb"/>

            <property name="javax.persistence.jdbc.user" value="root"/>

            <property name="javax.persistence.jdbc.password" value="password"/>

            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>

            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>

        </properties>

    </persistence-unit>

</persistence>

 

O código acima mostra como é feito a configuração do banco de dados no projeto. Vamos a partir destacar algumas tags que são essenciais para a configuração de um banco de dados:

 <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/exampledb"/>

 

A tag acima configura uma base de dados de acordo com as pré-configurações do banco de dados: nos temos no final da configuração o “exempledb” que pode ser alterado com outro nome de acordo com o contexto do seu projeto.

<property name="javax.persistence.jdbc.user" value="root"/>

<property name="javax.persistence.jdbc.password" value="password"/>

As tags acima mostra a configuração de usuário e senha do banco de dados. Os parâmetros “root” e “password” podem ser substituídos de acordo com as sconfigurações do seu banco.

<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>

 

A tag acima estabelece uma relação entre a aplicação Java e o banco de dados MySQL. Ele é responsável por traduzir as chamadas da API em código SQL.

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>

A tag acima define o dialeto que o hibernate deve utilizar para gerar o código SQL. Cada banco de dados tem o seu dialeto, logo essa propriedade tem finalidade de informar ao framework como ele deve se comportar em relações as operações de banco de dados.

Após serem concluídas as configurações, podemos utilizar uma linguagem de consulta que permite manipular dados utilizando esse framework. Trata-se do JPQL (Java Persistence Query Language) uma linguagem de consulta de banco de dados apropriada para aplicações que utilizam Hibernate e JPA com persistência de dados. Ela permite que o desenvolvedor realize operações no banco de dados através de comandos muito similares ao SQL, porém adaptado para a linguagem Java. A seguir será mostrado como é utilizada essa linguagem para as quatro operações básicas do SQL.  

Como são feitas as operações em JPQL?

No CREATE, não há uma query especifica realizar o cadastro de um registro no banco. Porém para realização de consultas atualizações e exclusão de registro no banco existem comandos muito parecidos com SQL que são utilizados para realizar essas operações:

Para realizar uma consulta utilizando JPQL podemos utilizar a seguinte sintaxe:

String jpql = "SELECT u FROM User u WHERE u.username = :username";

A sintaxe acima realiza uma consulta na entidade User utilizando username como chave para consulta. O parâmetro username pode ser trocado por outro parâmetro que o usuário deseja para realizar a consulta.

Para atualizar um registro no banco de dados pode-se utilizar a seguinte sintaxe:

String jpql = "UPDATE User u SET u.password = :newPassword WHERE u.username = :username";

A sintaxe acima mostra como é realizada a atualização de um registro através do comando UPDATE. Para realizar a atualização de registro deve utilizar a cláusula WHERE pois sem ela o seu registro é alterado em todos os atributos.

String jpql = "DELETE FROM User u WHERE u.username = :username";

A sintaxe acima mostra como se apaga um registro através do comando DELETE. Para realizar a exclusão de um registro especifico o usuário deve-se usar a cláusula WHERE passando como parâmetro uma chave especifica que indica qual registro será apagado.

Neste artigo tratamos sobre as ferramentas que são utilizadas para manipular e persistir os dados no banco utilizando Hibernate e JPA.

Comments

Popular posts from this blog

Usando o diagrama de classes no processo de desenvolvimento de software

Como criar um projeto novo em Angular

Atribuições de um Analista de Testes (QA) Quality Assurance