Skip to content

Instantly share code, notes, and snippets.

@thiagolenz
Last active October 11, 2020 14:07
Show Gist options
  • Select an option

  • Save thiagolenz/8376af4dbb102046f0adcfa4b9895fcb to your computer and use it in GitHub Desktop.

Select an option

Save thiagolenz/8376af4dbb102046f0adcfa4b9895fcb to your computer and use it in GitHub Desktop.
PessoaAPIDTOService
@Service
public class PessoaService {
@Autowired private PessoaRepository pessoaRepository;
@Autowired private EnderecoRepository enderecoRepository;
public PessoaDTO save (PessoaDTO pessoaDTO) {
Pessoa pessoa = convertFrom(pessoaDTO);
pessoaRepository.save (pessoa);
saveEndereco (pessoaDTO, pessoa);
pessoaDTO.setId (pessoa.getId());
return pessoaDTO;
}
/**
Salva o endereço somente se não encontrar um identico
Utiliza o recurso QueryByExample
*/
private saveEndereco (PessoaDTO pessoaDTO, Pessoa pessoa) {
Endereco endereco = convertFrom(pessoaDTO, pessoa.getId());
List<Endereco> existents = enderecoRepository.findAll (Example.of (endereco));
if (existents.isEmpty()) {
enderecoenderecoRepository.save (endereco);
}
}
// metodos de conversao de DTO para Entity
private Pessoa convertFrom (PessoaDTO pessoaDTO) {
Pessoa pessoa = new Pessoa ();
pessoa.setNome(pessoaDTO.getNome());
pessoa.setId(pessoaDTO.getId());
return pessoa;
}
private Endereco convertFrom (PessoaDTO pessoaDTO, Long pessoaId) {
Endereco endereco = new Endereco();
endereco.setPessoaId (pessoaId);
endereco.setNome(pessoaDTO.getRua());
// restante dos get/set
return endereco;
}
}
@Repository
public class PessoaRepository extends JpaRepository<Pessoa, Long> {}
@Repository
public class EnderecoRepository extends JpaRepository<Endereco, Long>,
QueryByExampleExecutor<Endereco> {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment