Hibernate ORM é uma poderosa solução de mapeamento objeto/relacional para Java e facilita o desenvolvimento de lógica de persistência para aplicativos, bibliotecas e estruturas.
O Hibernate implementa JPA, a API padrão para persistência objeto/relacional em Java, mas também oferece um extenso conjunto de recursos e APIs que vão além da especificação.
Consulte Hibernate.org para obter mais informações.
O Hibernate usa Jenkins e GitHub Actions para suas necessidades de CI. Ver
Vagas da Jenkins
Trabalhos de ações do GitHub
A construção requer pelo menos Java 11 e no máximo Java 17.
O Hibernate usa Gradle como ferramenta de construção. Consulte a seção Gradle Primer abaixo se você for novo no Gradle.
Os colaboradores devem ler o Guia de Contribuição.
Consulte os guias para configurar o IntelliJ ou o Eclipse como seu ambiente de desenvolvimento.
A ferramenta de compilação Gradle possui uma documentação incrível. 2 em particular que são indispensáveis:
O Guia do usuário do Gradle é um guia do usuário típico, pois segue uma abordagem tópica para descrever todos os recursos do Gradle.
O Gradle DSL Guide é único e excelente para se atualizar rapidamente sobre certos aspectos do Gradle.
Abordaremos o básico que os desenvolvedores e colaboradores novos no Gradle precisam saber para se tornarem produtivos rapidamente.
Observação | O projeto define um Gradle Wrapper. O restante da seção assumirá a execução através do wrapper. |
Gradle usa o conceito de tarefas de construção (equivalente a alvos Ant ou fases/objetivos Maven). Você pode obter uma lista de tarefas disponíveis via
tarefas gradle
Para executar uma tarefa em todos os módulos, basta executá-la no diretório raiz. Gradle visitará cada subprojeto e executará essa tarefa se o subprojeto a definir. Para executar uma tarefa em um módulo específico você pode:
cd
nesse diretório do módulo e execute a tarefa
nomeie o "caminho da tarefa". Por exemplo, para executar os testes para o módulo hibernate-core no diretório raiz, você poderia dizer gradle hibernate-core:test
As tarefas comuns que você pode usar na construção do Hibernate incluem:
build - Monta (jars) e testa este projeto
compile - Executa todas as tarefas de compilação, incluindo recursos de teste principal e de teste
jar - Gera um arquivo jar com todas as classes compiladas
test - Executa os testes
publishToMavenLocal - Instala o jar do projeto em seu cache maven local (também conhecido como ~/.m2/repository). Observe que o Gradle nunca usa isso, mas pode ser útil para testar sua compilação com outras compilações locais baseadas em Maven.
clean - Limpa o diretório de compilação
O teste em um banco de dados específico pode ser realizado de duas maneiras diferentes:
Vindo mais tarde…
A compilação do Hibernate define vários "perfis" de teste de banco de dados em databases.gradle
. Esses perfis podem ser ativados por nome usando a propriedade db
build que pode ser passada como uma propriedade de sistema JVM ( -D
) ou como uma propriedade de projeto Gradle ( -P
). Os exemplos abaixo usam a abordagem de propriedade do projeto Gradle.
compilação limpa gradle -Pdb=pgsql
Para executar um teste em seu IDE, você precisa garantir que as expansões de propriedade aconteçam. Use o seguinte comando:
compilação limpa gradle -Pdb=pgsql
NOTA: Se você estiver executando testes em um driver JDBC que não está disponível via Maven central, certifique-se de adicionar esses drivers ao cache de repositório Maven local (~/.m2/repository) ou (melhor) adicioná-los a um servidor de repositório Maven pessoal
Você pode executar qualquer teste em qualquer banco de dados específico configurado em um perfil databases.gradle
.
Tudo que você precisa fazer é executar o seguinte comando:
./gradlew setDataBase -Pdb=pgsql
ou você pode usar a versão de atalho:
./gradlew sDB -Pdb=pgsql
Você pode fazer isso no módulo que está interessado em testar ou na pasta raiz hibernate-orm
.
Depois, basta escolher qualquer teste do IDE e executá-lo normalmente. O Hibernate escolherá a configuração do banco de dados no arquivo hibernate.properties
que foi configurado pela tarefa setDataBase
Gradle.
Você não precisa instalar todos os bancos de dados localmente para poder testá-los caso tenha o docker disponível. O script docker_db.sh
permite iniciar um banco de dados pré-configurado que pode ser usado para testes.
Tudo que você precisa fazer é executar o seguinte comando:
./docker_db.sh postgresql
omitir o argumento imprimirá uma lista de opções possíveis.
Quando o banco de dados for iniciado corretamente, você poderá executar testes com perfis especiais com o sufixo _ci
, por exemplo, pgsql_ci
para PostgreSQL. Usando a propriedade do sistema dbHost
você pode configurar o endereço IP do seu host docker.
O comando para executar testes poderia ser parecido com o seguinte:
./gradlew teste -Pdb=pgsql_ci "-DdbHost=192.168.99.100"
A tabela a seguir ilustra uma lista de comandos para vários bancos de dados que podem ser testados localmente.
Banco de dados | docker_db.sh | Comando Gradle |
---|---|---|
H2 | - | |
HSQLDB | - | |
Apache Derby | - | |
MySQL | | |
Maria DB | | |
PostgreSQL | | |
EnterpriseDB | | |
Oráculo | | |
DB2 | | |
Servidor SQL | | |
Sybase ASE (jTDS) | | |
Sybase ASE (jConnect) | | |
SAP HANA | | |
BarataDB | | |
TiDB | | |
Informix | | |
Para parar um contêiner iniciado por docker
, use o comando
docker stop $container_name
Substitua o comando podman
pelo docker
se estiver usando podman
Por exemplo, para parar o contêiner mariadb
docker stop mariadb