Oi Mateus!
Entendo sua dúvida sobre Flyway e Hibernate, e é ótimo que você esteja explorando diferentes ferramentas para gerenciar suas APIs. Vamos lá:
Hibernate: É uma ferramenta de ORM (Object-Relational Mapping) que facilita a interação com o banco de dados através de objetos Java. Ele é excelente para lidar com as operações de CRUD (Create, Read, Update, Delete) e gerencia o estado das entidades de forma automática. No entanto, ele não lida diretamente com o versionamento do esquema do banco de dados.
Flyway: É uma ferramenta de migração de banco de dados que foca no versionamento e na execução de scripts SQL para atualizar o esquema do banco de dados. Ele permite que você controle as mudanças no banco de dados de forma explícita e ordenada, além de oferecer funcionalidades como rollback, que podem ser muito úteis em ambientes de produção.
Você está certo ao dizer que o Flyway oferece um controle mais robusto sobre o versionamento do banco de dados e rollback, características que não são nativas do Hibernate.
Quanto à sua pergunta sobre usar ambos ao mesmo tempo: Sim, é possível e até comum usar Flyway e Hibernate juntos em um projeto. Flyway pode ser usado para gerenciar o esquema do banco de dados, enquanto o Hibernate cuida das operações de dados. Essa combinação pode proporcionar uma abordagem mais completa para o gerenciamento do banco de dados.
Por exemplo, você pode usar o Flyway para criar e atualizar tabelas com scripts SQL, garantindo que o esquema esteja sempre na versão correta, enquanto o Hibernate gerencia as entidades e suas relações.
Espero ter ajudado e bons estudos!