Contruir relacionamento [RESOLVIDO]

Tenho o seguinte mini-mundo:
Tenho o um cadastro de usuarios e a partir desse cadastro de usuario sera criado uma novo cadastro o de grupo de usuario.
Porem o cadastro de usuario sofrerar contantantes mudanças como exclusão o que ao me ver pode gera varias inconsistencias no banco.
Gostaria de saber qual a melhor maneira de eu desenvolver essa logica.
Desde ja obrigado.

Se você utilizar JPA, ele irá te avisar quando uma inconsistência possa acontecer. Com Hibernate tb vc terá esse resultado.

Se você for utilizar JDBC na unha, você terá que criar chave estrangeira em suas tabelas (o JPA pode fazer esse trabalho todo para vc).
A chave estrangeira não deixaria uma inconsistência acontecer.

De qualquer forma que você fizer irá gerar erros.
Usando JPA, Hibernate isso é mais tranquilo.
Agora com JDBC você meio que terá que fazer os tratamentos e as verificações caso delete algum registro que possui referencias em outras tabelas,etc…
Usando JDBC você pode usar técnicas do próprio SQL como Trigers e funções para nao deixar isso acontecer.

Mano, eu acho que uma FK vale mais a pena que trigger. Trigger é algo que fica meio escondido mas uma FK você ve ao descrever os dados da tabela.

Como que de qualquer forma que eu fizer isso vai gerar erros !
Isso e algo comun e diversos sistemas…

[quote=david.cs20]Como que de qualquer forma que eu fizer isso vai gerar erros !
Isso e algo comun e diversos sistemas…[/quote]
Uma coisa é erro, outra é “exception”.

Se Pessoa tem uma chave com Cachorro e vc tentar excluir Pessoa, ele vai levantar uma exception falando que não é possível por causa da FK.

Agora, se isso é comum em diversos sistemas, erro deles fi. O DB foi mal construído. sry. =/

Isso sim geraria um Erro de inconsistência.

Mano, eu acho que uma FK vale mais a pena que trigger. Trigger é algo que fica meio escondido mas uma FK você ve ao descrever os dados da tabela.[/quote]
Concordo plenamente, aliás, a função de uma chave estrangeira é justamente garantir integridade nos relacionamentos…

[quote=david.cs20]Tenho o seguinte mini-mundo:
Tenho o um cadastro de usuarios e a partir desse cadastro de usuario sera criado uma novo cadastro o de grupo de usuario.
Porem o cadastro de usuario sofrerar contantantes mudanças como exclusão o que ao me ver pode gera varias inconsistencias no banco.
Gostaria de saber qual a melhor maneira de eu desenvolver essa logica.
Desde ja obrigado.[/quote]
Acho que seu problema está mais na elaboração de um modelo de dados físico do que na lógica do sistema em si…

Esse problema de integridade pode ocorrer quando os desenvolvedores criam o DB e não DBAs fazem isso. DBAs tem essa preocupação nativa (ou pelo menos teria), pois é a área deles.

Resolvi o problema utilizando o hibernate segue abaixo o código:

@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) @JoinTable( name = "GrupoUsuario", joinColumns = @JoinColumn(name = "usuario_id"), inverseJoinColumns = @JoinColumn(name = "grupo_id") ) private Collection<Grupo> grupoList;

Caso alguém tenha a mesma duvida !

E no caso do banco de dados ja estar construído com PK e FK? Eu tenho de levar em consideração isso, ou o próprio BD gerenciaria essa situação?