Não existe nenhuma forma de alterar a exclusividade de uma chave "OneToOne" para "JionColumm unique" sem limpar todo o banco de dados já existente? Pois em uma aplicação real esta característica pode ter aparecido depois da aplicação já rodando.
Não existe nenhuma forma de alterar a exclusividade de uma chave "OneToOne" para "JionColumm unique" sem limpar todo o banco de dados já existente? Pois em uma aplicação real esta característica pode ter aparecido depois da aplicação já rodando.
Olá Fabio, tudo bem com você?
Até onde eu sei, esse tipo de constraint só é executada no momento de criação do banco de dados, então pós criação acredito que não teria efeito
Entretanto, nada nos impede de adicionar dentro do próprio banco de dados, então um simples:
ALTER TABLE livros
ADD UNIQUE ( autor_id );
Já será suficiente para que as próximas inserções respeitem essa regra :)
Isto é até um ponto que normalmente discutido, deixar ou não deixar a JPA
cuidar da estrutura do nosso banco de dados ?, algumas pessoas preferem criar todo schema
e alterações, e deixar a JPA
responsável apenas pelas operações de manipulação de dados, pois realmente em alguns pontos essa geração da JPA sera um pouco defasada, principalmente para migrações de dados :)
Além disso, perde-se um pouco do versionamento do banco de dados, quando ocorreu a alteração, e qual foi a a mudança se tornam perguntas difíceis de responder
Para isso existe algumas soluções mais elegantes, por exemplo, o Flyway
que é um versionador de banco de dados, com ele você desenha toda a estrutura do seu banco, e vai criando as chamadas migrações
que são arquivos .sql
que definem as mudanças que aconteceram, então você acaba tendo uma pasta da seguinte maneira:
E o flyway
fica responsável por ler e executar essas migrações para dentro do banco de dados, e gerar a estrutura
Vou deixar um vídeo de uma introdução ao Flyway
E 2 artigos bem interessantes que falam sobre ele:
Abraços e Bons Estudos!