Escolar Documentos
Profissional Documentos
Cultura Documentos
Java 11
Hibernate 5
Eclipse IDE
Maven
Primeiro passo
Primeiramente, vamos criar o schema no MySQL workbench. Então, basta clicar com o direito na coluna esquerda e selecionar a
opção de create schema. Aqui, chamei o schema de jpa_exemplo; você, porém, pode chamar do que quiser.
Segundo passo
Em seguida, vamos abrir o Eclipse e criar um novo projeto Maven. File > New > Other > Maven Project.
Na janela que abrir, marque a caixinha que diz “Create a simple project” e dê next.
Adicione descrição se quiser
Name: Um nome que pode ser mais amigável para identificar o projeto (não é obrigatório).
Logo depois, vamos adicionar as dependências do Hibernate e do MySQL connector no arquivo pom.xml:
<project xmlns="<http://maven.apache.org/POM/4.0.0>"
xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
xsi:schemaLocation="<http://maven.apache.org/POM/4.0.0>
<https://maven.apache.org/xsd/maven-4.0.0.xsd>">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.cod3r</groupId>
<artifactId>GerenciadorNinja</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>CrudHIbernateJpa</name>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<!-- [<https://mvnrepository.com/artifact/org.hibernate/hibernate-
core>](<https://mvnrepository.com/artifact/org.hibernate/hibernate-core>) -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.5.Final</version>
</dependency>
<!-- [<https://mvnrepository.com/artifact/mysql/mysql-connector-java>]
(<https://mvnrepository.com/artifact/mysql/mysql-connector-java>) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!-- <https://mvnrepository.com/artifact/org.hibernate/hibernate-
entitymanager> -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.6.5.Final</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version> <!-- or whatever current version
-->
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Por fim, para concluir essa parte de configuração, vamos criar o arquivo persistence.xml, que determina as configurações de
persistência do projeto. Não precisa decorar nada disso, há bastante exemplos desse arquivo no Google; basta fazer as
substituições.
<persistence xmlns="<http://java.sun.com/xml/ns/persistence>"
xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
xsi:schemaLocation="<http://java.sun.com/xml/ns/persistence>
<http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd>"
version="2.0">
<!-- unidade de persistencia -->
<persistence-unit name="jpa_exemplo">
<!-- Implementação do JPA, no nessa caso Hibernate -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- Aqui são listadas todas as entidades -->
<class></class>
<properties>
<!-- Propriedades JDBC -->
<property name="javax.persistence.jdbc.driver"
value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/jpa_exemplo
?useTimezone=true&serverTimezone=UTC" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password"
value="123456" />
<!-- Configurações específicas do Hibernate -->
<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
Primeiramente, crie um pacote chamado infra; dentro desse pacote, estabeleça uma nova classe chamada DAO. O começo ficará
assim:
package infra;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
Nesse código tem, basicmente, o necessário para a criação de um objeto de persistência, faltando apenas passar uma
”@”Entity: Essa anotação diz que essa classe será uma entidade JPA, uma tabela será criado no nosso db.
“@”Id: Diz que tal atributo será a primary key dessa tabela
“@”GeneratedValue: Define a estratégia que o id vai usar, escolhemos IDENTITY para gerar em ordem crescente
Ao dar Run as Java App, nossa tabela será criada lá no MySQL, ainda sem o naruto nela.
Antes, precisamos de métodos para abrir a transação com o db e uma pra fechar. Adicione esse código no seu DAO.
Percebam que o que fazemos no método abrir() é pegar a transação no nosso EntityManager e dar o begin (começar). Já no
Create Ninja
Em seguida, para criar um novo ninja na tabela, vamos usar um método do EntityManager chamado persist, que recebe a entidade
Agora vamos voltar a nossa classe Teste pra ver se, agora, conseguimos criar o Naruto e o Shikamaru na tabela. Com esse código:
Obter pelo Id
Bom, voltemos pro DAO para criar esse método. Para encontrar um ninja, vamos usar o método do EM chamado find que recebe
dois argumentos, o Id e a classe que estamos trabalhando. Mas perceba que agora retornamos uma Entidade E e não um DAO<E>:
Abra sua tabela para ver o Id do ninja que você quer buscar e, em seguida, faça na classe teste:
System.out.println(daoNinja.encontrarPeloId(3).getNome());
No meu caso, Naruto foi printado no console. Se você quiser um informação completa, crie o método toString() na classe Ninja,
Deletar pelo Id
Aqui não é tão simples quanto o create, mas vamos usar nosso método de encontrar pelo Id e passar o ninja encontrado para o
No entanto, repare que eu faço um operador ternário para ver se o ninjaEncontrado está no EM atual. Se estiver ótimo, retornamos
Método atualizar()
Agora, para atualizar, a gente vai fazer um pouco diferente: estávamos trabalhando com generics no nosso DAO até agora; nesse
public Ninja atualizar(int id, String nome, String habilidade, String aldeia, Boolean
aposentado, int idade) {
DAO<E> dao = new DAO<E>(entidade);
dao.abrir();
em.merge(ninja);
dao.fechar();
return ninja;
}
Nesse método, eu abri uma transação, encontrei o ninja pelo id e setei seus atributos com as informações que vamos passar como