您可以
aStudent.getTeachers().add(aTeacher);
这样一个学生关联老师的数量是少的。在学生这一侧做操作比在老师一侧做操作关联的数据量少。提高效率。
否则,就需要使用本地SQL的方式进行操作了。但是这样就又失去了使用Hibernate的意义了。使用Hibernate的一般原则是尽量通过Hibernate提供的API来完成数据库操作,这样会简化代码编写,提高开发效率。但是有的时候考虑程序运行效率和需求,需要使用本地SQL的方式来操作数据库,目的是提高效率。在这样的矛盾中,根据需求进行取舍吧。
使用了多对多关联和hibernate,那么不管你从student表还是从teacher表添加,都会要把所有的teacher或者student查出来。
使用多对对,数据库表设计就有瑕疵,要提高效率,考虑下表设计。
Many2Many:定义多对多关联, 通过@table描述关联表和关联表之间的关系,双向关联时一端必须定义为owner,另一端必须定义为inverse
@ManyToMany(targetEntity=全路径.calss)
@JoinTable(name=”table_name”),
JoinColumn(name=”column_name”)需要关联的列名,
InverseJoinColumns=@JoinColumn(name=”cloumn_name”)指向目标实体表的外键.
要是这么你都觉得效率低,那就不要用 hibernate,直接用sql插入一条记录到teacher_student表够快了吧。一个是面向对象,一个面向关系,有得必有失。
设置 lazy="false"