我有一个表“学生”和另一个“法案”,这些表之间的关系是多对多的, 这会创建一个新的“student_act”表。
但是我已经注册了学生,我将它们与现有法案联系起来,我怎么能用hibernate做呢?请帮助我
eu tenho uma tabela“aluno”e outra“acta”,一个重要的essas tabelas e de muitos-para-muitos, isso gera uma nova tabela“aluno_acta”。
porem eu tenho alunos registados,quero relacionar-los a uma acta tambem existente,como faco?阿茹达
答案 0 :(得分:0)
当我有多对多的关系时,从不在这样的类中将它们链接起来:
class Student {
private Collection<Act> acts;
}
class Act {
private Collection<Student> students;
}
这背后的原因是因为我不想加载更多需要的东西
这是什么意思:
=&GT; 1名学生有x使徒行传。每个法案都有x个学生。那些学生有x Acts,...
当你只是加载1个实体时,你得到的东西比你想要的要多得多,而且你的数据库查询要重得多。
Hibernate可以使用Lazy系列,但我的个人经验是它只是一种痛苦......(你知道我的意思是^^)。
惰性集合的快速解释:当您查询对象或时,您需要直接获取集合,您需要保持数据库连接处于打开状态。
我认为这些都不是很好。
我一直在做的解决方案:
class Student {
}
class Act {
}
class StudentAct{
private Student student;
private Act act;
}
此解决方案的优点是可以从数据库中获取始终轻的物体
如果您需要特定学生的所有行为,您可以在StudenAct中查询学生是该学生的所有条目。
因为它不是一个懒惰的集合,所以你的fetch会创建一个新的数据库连接,所以你不需要像延迟集合一样打开连接,也不需要在你想要1个学生时直接获取它们。
现在插入,只是创建一个新的StudentAct对象并将其保存到DB。