Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 24 Próxima »

Introdução

Populate é um arquivo JSON que serve para popular automaticamente entidades JPA. Esse arquivo já é criado automaticamente nos projetos do Cronapp pois ele é utilizado com o intuito de popular a entidade User com os dados do admin e, com isso, poder dá acesso a página que somente os usuários autenticados podem utilizar. No entanto, caso queira adicionar outros dados para popular as tabelas automaticamente, fique a vontade.

Importante

Trabalhar com versionamento e realizar commits tornam esses dados que estão inseridos nesses arquivos expostos para todos que tiverem acesso.


Figura 1 - Arquivo populate.json

Utilizando o populate.json

Será apresentado um exemplo geral, utilizando uma classe sem nenhum relacionamento para demonstrar a estrutura de como realiza a inserção dos dados através desse arquivo. Após, serão apresentados exemplos para cada tipo de relacionamento para mostrar suas diferenças (ou suas especificações).

Estrutura básica

O primeiro exemplo a ser utilizado será da classe da Figura 2.1. Essa classe possui quatro campos:

  • id: tipo TEXTO;
  • titulo: tipo TEXTO;
  • episodio: tipo INTEIRO;
  • completo: tipo LOGICO.

Figura 2.1 - Classe sem relacionamento

Para inserir dados nessa classe através do arquivo, você precisa especificar a classe e todos os seus campos. Para indicar a classe, você adiciona a chave "_class" e o seu valor é o "caminho" (Figura 2.2) onde encontra a classe ("namespace.pacote.nomedaclasse" - sem a extensão .java). No exemplo da Figura 2.1, ele ficará do seguinte modo: "_class" : "app.entity.Anime"


Figura 2.2 - Caminho: namespace.pacote.nomedaclasse


Observação

Quando uma camada de dados é criada para uma classe, os arquivos gerados são salvos automaticamente no pacote Entity dentro do namespace app. Caso os arquivos gerados da classe estejam em outro namespace ou pacote, será preciso mudar o valor do "caminho" no arquivo json para essa classe.

Assim como a descrição da classe, os seus campos também são especificados da mesma maneira - por chave / valor. No entanto, a diferença fica por conta do _ (underline) que não existe nas chaves referenciadas do campo - como mostrado abaixo. Além disso, os valores dos campos precisam estar em conforme como o banco ler.

"id": "7A0DCC99-668B-4E28-8EE0-90D607CDAB5D",

"titulo": "Naruto",

"episodio": 700,

"completo": true


Resultado final para a estrutura básica
[
	{
		"_class" : "app.entity.Anime",
		"id": "7A0DCC99-668B-4E28-8EE0-90D607CDAB5D",
		"titulo": "Naruto",
		"episodio": 700,
		"completo": true
	}
]

Duas coisas importantes a serem notadas são os colchetes e as vírgulas. O par de colchetes é usado uma única vez no arquivo, ele vai englobar todos objetos e cada objeto deve ser separado por vírgula.

Comportamento do arquivo para relacionamento 1-1 e 1-N

Tanto no relacionamento 1-1 quanto 1-N, a ordem como eles são apresentados no arquivo tem fundamental importância - pois o detalhe se encontra na chave estrangeira. O objeto que não possui a chave estrangeira deve ser inserido primeiro, depois vem o objeto relacionado (o qual carrega a chave). Por exemplo, na figura 2.3 a tabela cliente carrega a chave estrangeira da tabela carro, então no arquivo JSON precisa ser inserido o objeto carro para depois ser inserido o objeto cliente.

Figura 2.3 - Relacionamento 1-1


A inserção da chave estrangeira no objeto é bem simples também, basta indica o nome da chave estrangeira na classe e relacionar com o id da classe entre chaves. Na figura 2.3, a chave estrangeira recebe o nome da classe, então ele ficará do seguinte modo:

 "carro": {"id": "3AA6CAF2-ACB3-4A45-9C53-03FD2FE7A393"}

Resultado final do relacionamento 1-1
{
    "_class": "app.entity.Carro",
    "id": "3AA6CAF2-ACB3-4A45-9C53-03FD2FE7A393",
    "marca": "Lexus",
    "modelo": "LFA",
    "placa": "DEB7I94"
  },
  {
    "_class": "app.entity.Cliente",
    "id": "AF498375-FCC6-4197-8B04-C7F3EC7E8D2C",
    "nome": "Deborah",
    "cpf": "60694536032",
    "carro": {"id": "3AA6CAF2-ACB3-4A45-9C53-03FD2FE7A393"}
  }

Então, para cada par de objetos, primeiro precisa ser adicionado o objeto que não carrega a chave estrangeira para depois adicionar o objeto que a carrega.

Comportamento do arquivo para relacionamento N-M


Nessa página

  • Sem rótulos