Página Inicial > Spring Boot, Springframework > Spring Boot – Persistindo dados

Spring Boot – Persistindo dados

Hoje mostrarei um exemplo de como gerenciar informações em bancos de dados.
Antes de mais nada atualize seu Spring Boot CLI (hoje a versão 1.2).


gvm i springboot

crie um novo projeto com o auxilio do Spring Boot CLI


spring init --packageName=br.com.dados --type=gradle-project --dependencies=web,data-jpa dadosProject

O comando


spring init --list

mostra todas as opções para esse comando.

Certifique-se de que seu arquivo build.gradle se parece com esse:


buildscript {
    ext {
        springBootVersion = '1.2.0.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot' 

jar {
    baseName = 'demo'
    version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.7
targetCompatibility = 1.7

repositories {
    mavenCentral()
}


dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    testCompile("org.springframework.boot:spring-boot-starter-test")
    compile("org.hsqldb:hsqldb")
}

Crie um simples entity:


package demo.domain;

import ...

@Entity
public class Banco implements Serializable {
    @Id
    @GeneratedValue
    private Long id;

    @Column(nullable = false)
    private String codigo;

    @Column(nullable = false)
    private String nome;

    public Banco() {
        super();
    }

    public Banco(String codigo, String nome) {
        this.codigo = codigo;
        this.nome = nome;
    }

    ...
    

}

crie uma interface para o repositório


package demo.domain;

import org.springframework.data.repository.CrudRepository;

public interface BancoRepository extends CrudRepository {
    Banco findByCodigo(String codigo);
}

E por fim uma classe de testes:


package demo;

import ...

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
public class ApplicationTests {
    @Autowired
    private BancoRepository bancoRepository;

    @Test
    public void bancoTest() {

        // create
        Banco banco = new Banco("001", "Banco do Brasil SA");
        bancoRepository.save(banco);
        Assert.assertTrue("registros encontrados = 0", bancoRepository.count() > 0);

        // read
        Banco bancoSaved = bancoRepository.findByCodigo("001");
        Assert.assertNotNull("registros nao encontrado", bancoSaved);

        // update
        bancoSaved.setNome("Banco Brasileiro SA");
        bancoRepository.save(bancoSaved);
        Banco bancoUptodate = bancoRepository.findByCodigo("001");
        Assert.assertFalse("nome nao atualizado", bancoUptodate.getNome().equalsIgnoreCase("Banco do Brasil SA"));

        // delete
        bancoRepository.delete(bancoUptodate);
        Banco bancoDeleted = bancoRepository.findByCodigo("001");
        Assert.assertTrue("entity nao apagado", bancoDeleted == null);

    }

}

Execute o teste e verá que todos passaram.

Ao analizar o código, a primeira pergunta que surge é onde os dados foram persistidos? Qual DataSource foi usado?
Observe que adicionamos ao arquivo build.gradle a dependência do banco HyperSQL DataBase (hsqldb). Isso foi suficiente para que o Spring Boot criasse automaticamente um datasource em memória e disponibilizasse para que usássemos.

Isso é legal mas não parece muito útil. Edite o arquivo application.properties adicionando as linhas abaixo que farão com que o banco de dados seja gerenciado em arquivo.


spring.jpa.hibernate.ddl-auto=update

spring.datasource.url=jdbc:hsqldb:file:banco_db

ou essas para utilizar o MySQL:


spring.jpa.hibernate.ddl-auto=update

spring.datasource.url=jdbc:mysql://localhost:3306/banco_db
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

veja aqui mais opções de configuração para esse arquivo.

Categories: Spring Boot, Springframework Tags:
  1. Nenhum comentário ainda.
  1. Nenhum trackback ainda.