插入存在多对多,休眠的记录

时间:2016-02-01 07:49:35

标签: java hibernate many-to-many zk many-to-one

我有一个表“学生”和另一个“法案”,这些表之间的关系是多对多的, 这会创建一个新的“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?阿茹达

1 个答案:

答案 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。