Em um relacionamento Many-to-One tenho Curso que contem Alunos
Crio um curso, 2 alunos, adiciono os alunos no curso e mando salvar o curso apenas e o alunos também são inseridos, visto que uso o cascade=“save-update”…
código…
[code]try{
SessionFactory sf = new Configuration().configure("/hibernate.cfg.xml").buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction(); //cria transacao
Aluno al1 = new Aluno();
al1.setNome("Leonardo");
al1.setCpf(123123123);
al1.setMatricula(102233);
Aluno al2 = new Aluno();
al2.setNome("Xuxa");
al2.setCpf(11111111);
al2.setMatricula(101222);
Curso c1 = new Curso();
c1.setAlunos(new HashSet<Aluno>());
c1.getAlunos().add(al1);
c1.getAlunos().add(al2);
c1.setCodigo(123);
c1.setNome("Computacao");
c1.setSigla("CCC");
session.saveOrUpdate(c1);
tx.commit();
session.close();
} catch (HibernateException e1) {
e1.printStackTrace();
}[/code]
Porém em um relacionamento Many-To-Many Curso com Departamento tenho que salvar primeiro o curso, salvar o departamento, criar o objeto do relacionamento e dpois eu salvo tal relacionamento…tem como usar o cascade pra reduzir o processo??? como no exemplo acima que fiz apenas o session.save() e no many-to-many tenho que fazer 3 session.save()
Segue o código pra exemplificar…
[code]try{
SessionFactory sf = new Configuration().configure("/hibernate.cfg.xml").buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction(); //cria transacao
Curso c1 = new Curso();
c1.setCodigo(11);
c1.setNome("Matemacica");
c1.setSigla("MAT");
c1.setDepartamentos(new HashSet<Departamento>());
Departamento d1 = new Departamento();
d1.setNome("Departamento de Letras");
d1.setSigla("DELL");
d1.setCursos(new HashSet<Curso>());
session.saveOrUpdate(d1);
session.saveOrUpdate(c1);
DepartamentoCursoID dcomp1 = new DepartamentoCursoID();
dcomp1.setCurso(c1);
dcomp1.setDepartamento(d1);
DepartamentoCurso dc1 = new DepartamentoCurso();
dc1.setComposicaoId(dcomp1);
session.saveOrUpdate(dc1);
tx.commit();
session.close();
} catch (HibernateException e1) {
e1.printStackTrace();
}[/code]