Coder Social home page Coder Social logo

augustomello09 / spring-data-e-jpa Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 32 KB

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.

Java 100.00%
hibernate java junit4 maven postgresql spring-data-jpa

spring-data-e-jpa's Introduction

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

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

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 Banco

Criando o Repository

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import estudoSpringData.estudoSpringData.model.UsuarioSpringData;

@Repository
public interface InterfaceSpringDataUser extends CrudRepository<UsuarioSpringData, Long> {

}

Instanciando a dependência

Fazendo a injeção de dependência da classe InterfaceSpringDataUser na classe de teste.

@Autowired
private InterfaceSpringDataUser interfaceSpringDataUser;

CRUD

INSERT

Realizando cadastro no banco de dados.

@Test
	public void testeInsert() {

		UsuarioSpringData usuarioSpringData = new UsuarioSpringData();
		usuarioSpringData.setNome("José");
		usuarioSpringData.setEmail("[email protected]");
		usuarioSpringData.setIdade(18);
		usuarioSpringData.setLogin("@123");
		usuarioSpringData.setSenha("123");

		interfaceSpringDataUse.save(usuarioSpringData);
	}

Insert na tabela

Consultando registro por Id

@Test
	public void testeConsulta() {
		Optional<UsuarioSpringData> 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

@Test
	public void testeConsultaTodos() {
			Iterable<UsuarioSpringData> 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).

Tabela com todos os usuários

@Test
	public void testeUpdate() {
		Optional<UsuarioSpringData> usuarioSpringData = interfaceSpringDataUse.findById(3L);

		UsuarioSpringData data = usuarioSpringData.get();

		data.setEmail("[email protected]");
		data.setNome("Blablu");

		interfaceSpringDataUse.save(data);

	}

Tabela com Alteração

DELETE de registros

Deletando o Id(1) da tabela registro.

Tabela com todos os usuários

@Test
	public void testeDelete() {
		Optional<UsuarioSpringData> usuarioSpringData = interfaceSpringDataUse.findById(1L);

		interfaceSpringDataUse.delete(usuarioSpringData.get());

	}

Tabela com Usuário Deletado

Consulta no banco

Realizando consultas customizadas com @Query.

@Repository
public interface InterfaceSpringDataUser extends CrudRepository<UsuarioSpringData, Long> {

	@Query(value = "select p from UsuarioSpringData p where p.nome like %?1%")
	public List<UsuarioSpringData> buscarPorNome(String nome);
}
@Test
	public void testeConsultaNome() {
		List<UsuarioSpringData> 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.

Tabela com Usuário Deletado

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

delete por nome

UPDATE condicional

joão email

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

joão Update

Criando e salvando objetos relacionados

Criando a tabela de telefone e aplicando o conceito de muitos para um e relacionando.

@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;
	}

}

telefone

Criando o Repository telefone

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import estudoSpringData.estudoSpringData.model.UsuarioSpringData;

@Repository
public interface Telefone extends CrudRepository<Telefone, Long>{

}

Instanciando a dependência

Fazendo a injeção de dependência da classe InterfaceTelefone na classe de teste.

@Autowired
	private InterfaceTelefone interfaceTelefone;

INSERT na tabela Telefone

Realizando cadastro no banco de dados.

telefone vazio

@Test
	public void testeInsertTelefone() {

		Optional<UsuarioSpringData> usuarioSpringData = interfaceSpringDataUse.findById(3L);

		Telefone telefone = new Telefone();
		telefone.setTipo("Celular");
		telefone.setNumero("1998454729");
		telefone.setUsuarioSpringData(usuarioSpringData.get());

		interfaceTelefone.save(telefone);

	}

telefone setado

Relacionado a tabela de usuários com os telefones

Criando um relacionamento e usando conceito de muitos para um na classe UsuarioSpringData.

@OneToMany(mappedBy = "usuarioSpringData", orphanRemoval = true, fetch = FetchType.EAGER)
	private List<Telefone> telefones;

	public List<Telefone> getTelefones() {
		return telefones;
	}

	public void setTelefones(List<Telefone> telefones) {
		this.telefones = telefones;
	}

Ferramentas e Tecnologias usadas nesse repositório 🌐


Augusto-Java Augusto-SpringBoot Augusto-POSTGRESQL Augusto-Junit

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. 🤝

spring-data-e-jpa's People

Contributors

augustomello09 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.