https://github.com/augustomello09/spring-data-e-jpa
Praticar a parte de persistência de forma simples com CRUD utilizando Spring DATA e JPA, banco de dados relacional PostgreSQL e teste unitários com Junit.
https://github.com/augustomello09/spring-data-e-jpa
hibernate java junit4 maven postgresql spring-data-jpa
Last synced: about 2 months ago
JSON representation
Praticar a parte de persistência de forma simples com CRUD utilizando Spring DATA e JPA, banco de dados relacional PostgreSQL e teste unitários com Junit.
- Host: GitHub
- URL: https://github.com/augustomello09/spring-data-e-jpa
- Owner: AugustoMello09
- Created: 2022-10-30T17:04:40.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-01-10T12:25:06.000Z (over 3 years ago)
- Last Synced: 2025-06-20T09:07:32.703Z (about 1 year ago)
- Topics: hibernate, java, junit4, maven, postgresql, spring-data-jpa
- Language: Java
- Homepage:
- Size: 31.3 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Spring Data e JPA
#### Objetivo do repositório
Entender a parte de persistência de forma simples com
CRUD utilizando Spring DATA e JPA, banco de dados relacional PostgreSQL e teste unitários com Junit.
### Criando uma Entidade
~~~JAVA
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class UsuarioSpringData {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String login;
private String senha;
private String nome;
private String email;
private int idade;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
}
~~~
#### Testando a criação de Tabela no Banco
~~~ JAVA
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations ={"classpath:META-INF/spring-config.xml"})
public class AppSpringDataTest {
@Test
public void testeCriacao() {
System.out.println("iniciou Spring com Sucesso");
}
}
~~~

#### Criando o Repository
~~~JAVA
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import estudoSpringData.estudoSpringData.model.UsuarioSpringData;
@Repository
public interface InterfaceSpringDataUser extends CrudRepository {
}
~~~
#### Instanciando a dependência
Fazendo a injeção de dependência da classe InterfaceSpringDataUser na classe de teste.
~~~JAVA
@Autowired
private InterfaceSpringDataUser interfaceSpringDataUser;
~~~
## CRUD
#### INSERT
Realizando cadastro no banco de dados.
~~~JAVA
@Test
public void testeInsert() {
UsuarioSpringData usuarioSpringData = new UsuarioSpringData();
usuarioSpringData.setNome("José");
usuarioSpringData.setEmail("example@gmail.com");
usuarioSpringData.setIdade(18);
usuarioSpringData.setLogin("@123");
usuarioSpringData.setSenha("123");
interfaceSpringDataUse.save(usuarioSpringData);
}
~~~

#### Consultando registro por Id
~~~JAVA
@Test
public void testeConsulta() {
Optional usuarioSpringData = interfaceSpringDataUse.findById(2L);
System.out.println(usuarioSpringData.get().getId());
System.out.println(usuarioSpringData.get().getEmail());
System.out.println(usuarioSpringData.get().getNome());
System.out.println(usuarioSpringData.get().getIdade());
System.out.println(usuarioSpringData.get().getLogin());
System.out.println(usuarioSpringData.get().getSenha());
}
~~~
#### Consultando todos os registro no banco
~~~JAVA
@Test
public void testeConsultaTodos() {
Iterable lista = interfaceSpringDataUse.findAll();
for (UsuarioSpringData usuarioSpringData : lista) {
System.out.println(usuarioSpringData.getId());
System.out.println(usuarioSpringData.getEmail());
System.out.println(usuarioSpringData.getNome());
System.out.println(usuarioSpringData.getIdade());
System.out.println(usuarioSpringData.getLogin());
System.out.println(usuarioSpringData.getSenha());
System.out.println("-----------------------------------------");
}
}
~~~
#### UPDATE de cadastro
Realizando Update de cadastro do Id (3).

~~~JAVA
@Test
public void testeUpdate() {
Optional usuarioSpringData = interfaceSpringDataUse.findById(3L);
UsuarioSpringData data = usuarioSpringData.get();
data.setEmail("example3@gmail.com");
data.setNome("Blablu");
interfaceSpringDataUse.save(data);
}
~~~

#### DELETE de registros
Deletando o Id(1) da tabela registro.

~~~JAVA
@Test
public void testeDelete() {
Optional usuarioSpringData = interfaceSpringDataUse.findById(1L);
interfaceSpringDataUse.delete(usuarioSpringData.get());
}
~~~

#### Consulta no banco
Realizando consultas customizadas com @Query.
~~~JAVA
@Repository
public interface InterfaceSpringDataUser extends CrudRepository {
@Query(value = "select p from UsuarioSpringData p where p.nome like %?1%")
public List buscarPorNome(String nome);
}
~~~
~~~JAVA
@Test
public void testeConsultaNome() {
List list = interfaceSpringDataUse.buscarPorNome("joão");
for (UsuarioSpringData usuarioSpringData : list) {
System.out.println(usuarioSpringData.getId());
System.out.println(usuarioSpringData.getEmail());
System.out.println(usuarioSpringData.getNome());
System.out.println(usuarioSpringData.getIdade());
System.out.println(usuarioSpringData.getLogin());
System.out.println(usuarioSpringData.getSenha());
System.out.println("-----------------------------------------");
}
}
~~~
#### DELETE por nome
Realizando Delete condicional.

~~~JAVA
@Modifying
@Transactional
@Query("delete from UsuarioSpringData u where u.nome = ?1")
public void deletePorNome(String nome);
~~~
~~~JAVA
@Test
public void testeDeletePorNome() {
interfaceSpringDataUse.deletePorNome("joão");
}
~~~

#### UPDATE condicional

~~~JAVA
@Modifying
@Transactional
@Query("update UsuarioSpringData u set u.email = ?1 where u.nome =?2")
public void updatePorEmail(String email, String nome);
~~~
~~~JAVA
@Test
public void testeUpdatePorEmail() {
interfaceSpringDataUse.updatePorEmail("example2UPDATE@gmail.com","joão");
}
~~~

#### Criando e salvando objetos relacionados
Criando a tabela de telefone e aplicando o conceito de muitos para um e relacionando.
~~~JAVA
@Entity
public class Telefone {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
private Long id;
private String tipo;
private String numero;
@ManyToOne
private UsuarioSpringData usuarioSpringData;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
public UsuarioSpringData getUsuarioSpringData() {
return usuarioSpringData;
}
public void setUsuarioSpringData(UsuarioSpringData usuarioSpringData) {
this.usuarioSpringData = usuarioSpringData;
}
}
~~~

#### Criando o Repository telefone
~~~JAVA
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import estudoSpringData.estudoSpringData.model.UsuarioSpringData;
@Repository
public interface Telefone extends CrudRepository{
}
~~~
#### Instanciando a dependência
Fazendo a injeção de dependência da classe InterfaceTelefone na classe de teste.
~~~JAVA
@Autowired
private InterfaceTelefone interfaceTelefone;
~~~
#### INSERT na tabela Telefone
Realizando cadastro no banco de dados.

~~~JAVA
@Test
public void testeInsertTelefone() {
Optional usuarioSpringData = interfaceSpringDataUse.findById(3L);
Telefone telefone = new Telefone();
telefone.setTipo("Celular");
telefone.setNumero("1998454729");
telefone.setUsuarioSpringData(usuarioSpringData.get());
interfaceTelefone.save(telefone);
}
~~~

#### Relacionado a tabela de usuários com os telefones
Criando um relacionamento e usando conceito de muitos para um na classe UsuarioSpringData.
~~~JAVA
@OneToMany(mappedBy = "usuarioSpringData", orphanRemoval = true, fetch = FetchType.EAGER)
private List telefones;
public List getTelefones() {
return telefones;
}
public void setTelefones(List telefones) {
this.telefones = telefones;
}
~~~
## Ferramentas e Tecnologias usadas nesse repositório 🌐

## Teste o projeto 👁🗨
Download do projeto para testar em sua máquina: https://github.com/AugustoMello09/Spring-Date-e-JPA/archive/refs/heads/main.zip
## Entre em contato comigo através dos canais abaixo e desde já, agradeço a atenção. 🤝