Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Não entendi a utilidade deste arquivo

Olá, para mim não ficou clara a utilidade desse arquivo, alguém pode esclarecer?

Eu por ex estou criando uma API Rest de cadastro de clientes, como ficaria esse arquivo?

Obrigada.

3 respostas
solução!

Olá! Tudo bem? O arquivo data.sql é normalmente usado em ambientes de desenvolvimento e teste, quando queremos deixar alguns registros por padrão no banco de dados. Podemos usar esses registros padrões para fazer testes de buscas, alterações, remoção e outras coisas. Sempre que o servidor for inicializado, os comandos do data.sql vão ser executados. Num caso de clientes, o arquivo poderia ficar assim:

INSERT INTO clientes (nome, cpf) VALUES ('Paulo', '123.456.789-19');
INSERT INTO clientes (nome, cpf) VALUES ('Maria', '423.456.876-01');
INSERT INTO clientes (nome, cpf) VALUES ('Joaquim', '293.245.878-29');

Tendo esses comandos no arquivo data.sql do seu projeto, quando o servidor for inicializado os clientes Paulo, Maria e Joaquim já vão existir, então você pode fazer alguns testes com esses dados, sem ter que ficar criando clientes na mão toda hora que subir o servidor para fazer algum teste. Outro arquivo parecido é o schema.sql, que vai criar as tabelas do banco de dados manualmente. O Spring Data por padrão cria as tabelas com base nas classes Entity, mas dá pra alterar isso com esse arquivo schema.sql. Um exemplo com clientes ficaria assim:

CREATE TABLE clientes (
    id   INTEGER NOT NULL AUTO_INCREMENT,
    nome VARCHAR(50) NOT NULL,
    cpf VARCHAR(15) NOT NULL,
    PRIMARY KEY (id)
);

Espero ter ajudado!

Obrigada, esclareceu sim...

No caso esse exemplo que vc escreveu, precisa ter todos os atributos de Cliente? com exceção do id?

INSERT INTO clientes (nome, cpf) VALUES ('Paulo', '123.456.789-19');
INSERT INTO clientes (nome, cpf) VALUES ('Maria', '423.456.876-01');
INSERT INTO clientes (nome, cpf) VALUES ('Joaquim', '293.245.878-29');

Id é incrementado automaticamente quando se insere objeto no banco. Sobre ter todos os atributos, acho que vai depender da sua regra de negócios. No banco de dados entraria como null, mas dependendo de como você modelar suas entidades pode ser que você precise de todos. Depende de como você modela.

Eu to usando o mysql. Se você usar um banco de dados normal, só vai precisar popular o banco de dados uma vez só. Eu peguei o código mysql e executei no workbench. Claro, as alterações posteriores vão ficar refletidas no banco e alguns resultados vão dar diferentes dos do professor.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software