Inicialização de mola com hibernação
1. Visão geral
Neste artigo, daremos uma olhada em como usar o Spring Boot com Hibernate.
Criaremos um aplicativo simples de inicialização de primavera e veremos como é fácil integrá-lo ao Hibernate.
2. Inicializando o aplicativo
UsaremosSpring Initializr para inicializar nosso aplicativo Spring Boot. Para este exemplo, usaremos apenas as configurações e dependências necessárias para integrar o Hibernate, adicionando as dependênciasWeb,JPA,eH2. Explicaremos essas dependências na próxima seção.
Vamos gerar o projeto e abri-lo em nosso IDE. Podemos verificar a estrutura do projeto gerado e identificar os arquivos de configuração de que precisamos.
É assim que a estrutura do projeto se parecerá:
3. Dependências do Maven
Se abrirmospom.xml, veremos que temosspring-boot-starter-web espring-boot-starter-test como dependências maven. Como seus nomes sugerem, essas são dependências iniciais no Spring Boot.
Vamos dar uma olhada rápida na dependência que gera a JPA:
org.springframework.boot
spring-boot-starter-data-jpa
Essa dependência inclui API JPA, Implementação JPA, JDBC e outras bibliotecas necessárias. Como a implementação padrão da JPA é o Hibernate, essa dependência é suficiente para trazê-la também.
Finalmente, usaremosH2 como um banco de dados muito leve para este exemplo:
com.h2database
h2
runtime
Podemos usar o console H2 para verificar se o banco de dados está em funcionamento, também para uma GUI amigável para a entrada de dados. Vamos prosseguir e habilitá-lo emapplication.properites:
spring.h2.console.enabled=true
Isso é tudo o que precisamos para configurar para incluir o Hibernate e o H2 no nosso exemplo. Podemos verificar se a configuração foi bem-sucedida nos logs quando iniciamos o aplicativo Spring Boot:
HHH000412: Hibernate Core \ {# Version}
HHH000206: hibernate.properties não encontrado
HCANN000001: Hibernate Commons Annotations \ {# Version}
HHH000400: Usando dialeto: org.hibernate.dialect.H2Dialect
Agora podemos acessar o console H2 em localhost:http://localhost:8080/h2-console/.
4. Criando a Entidade
Para verificar se nosso H2 está funcionando corretamente, primeiro criaremos uma entidade JPA em uma nova pastamodels:
@Entity
public class Book {
@Id
@GeneratedValue
private Long id;
private String name;
// standard constructors
// standard getters and setters
}
Agora temos uma entidade básica, da qual H2 pode criar uma tabela. Reiniciando o aplicativo e verificando o console H2, uma nova tabela chamadaBook será criada.
Para adicionar alguns dados iniciais à nossa aplicação, precisamos criar um novo arquivo SQL, com algumas instruções de inserção e colocá-lo em nossa pastaresources. We can use import.sql (Hibernate support) or data.sql (Spring JDBC support) files to load data.
Aqui estão nossos dados de exemplo:
insert into book values(1, 'The Tartar Steppe');
insert into book values(2, 'Poem Strip');
insert into book values(3, 'Restless Nights: Selected Stories of Dino Buzzati');
Novamente, podemos reiniciar o aplicativo Spring Boot e verificar o console H2 - os dados agora estão na tabelaBook.
5. Criando o Repositório e Serviço
Continuaremos criando os componentes básicos para testar nosso aplicativo. Primeiro, vamos adicionar o Repositório JPA em uma nova pastarepositories:
@Repository
public interface BookRepository extends JpaRepository {
}
Podemos usar a interfaceJpaRepository do framework Spring, que fornece uma implementação padrão para as operaçõesCRUD básicas.
A seguir, vamos adicionarBookService em uma nova pastaservices:
@Service
public class BookService {
@Autowired
private BookRepository bookRepository;
public List list() {
return bookRepository.findAll();
}
}
Para testar nosso aplicativo, precisamos verificar se os dados criados podem ser buscados no métodolist() do serviço.
Vamos escrever o seguinteSpringBootTest:
@RunWith(SpringRunner.class)
@SpringBootTest
public class BookServiceUnitTest {
@Autowired
private BookService bookService;
@Test
public void whenApplicationStarts_thenHibernateCreatesInitialRecords() {
List books = bookService.list();
Assert.assertEquals(books.size(), 3);
}
}
Executando este teste, podemos verificar se o Hibernate cria os dadosBook que são buscados com sucesso por nosso serviço. Foi isso, o Hibernate está sendo executado com o Spring Boot.
6. Nome da tabela em maiúsculas
Às vezes, podemos precisar que os nomes das tabelas em nosso banco de dados sejam escritos em letras maiúsculas. Como já sabemos,by default Hibernate will generate the names of the tables in lowercase letters.
Também podemos tentar definir explicitamente o nome da tabela, assim:
@Entity(name="BOOK")
public class Book {
// members, standard getters and setters
}
No entanto, isso não funcionaria. O que funciona é definir essa propriedade emapplication.properties:
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Como resultado, podemos verificar em nosso banco de dados se as tabelas foram criadas com sucesso com letras maiúsculas.
7. Conclusão
Neste artigo, vimos como é fácil integrar o Hibernate ao Spring Boot. Usamos o banco de dados H2, como uma solução de memória muito leve.
Demos um exemplo completo de um aplicativo, que usa todas essas tecnologias e, finalmente, também fornecemos uma pequena dica sobre como definir os nomes das tabelas em maiúsculas em nosso banco de dados.
Como sempre, todos os trechos de código mencionados neste artigo podem ser encontradoson our GitHub repository.