每次一次操作都要先把原来的set查出来,然后再add进去吗? 这样会不会效率很低,不能直接只插入吗? 而且执行update(user)的时候,hibernate会先去更新一次user里面的字段(update user set xxx=xxx,...) 但是user值并没有改变啊,请问还有其他的方法来更新user和group的关联吗?
每次一次操作都要先把原来的set查出来,然后再add进去吗? 这样会不会效率很低,不能直接只插入吗? 而且执行update(user)的时候,hibernate会先去更新一次user里面的字段(update user set xxx=xxx,...) 但是user值并没有改变啊,请问还有其他的方法来更新user和group的关联吗? 第一个问题回答:如果你设置了级联关系,user对象已经包含了group的set,新添加add,只需要user.getGroups.add(新的); 如果你不查出来,程序如何知道,你不是想要删除旧的记录,而是想要新添加呢?? 第二个问题:性能方面,如果关联表设置的当,原有记录存在,只会添加新的,不会删除旧的;不存在你说的性能问题!第三点:优化方面 我是有一些方法,但是 很久没留意了 怕印象有误。 所以我想说的是,Hibernate本身就是面向对象的ORM,如想精准控制,就用JDBC吧,Hibernate不是不能,可以通过配置文件配置,但有些复杂,得不偿失;没有必要为这点性能顾虑太多,若是真要求高性能,Hibernate肯定不会用的
贴出hibernate配置看看
Gropu group3 = groupService.get(3);
Gropu group2 = groupService.get(2);
groups.add(group3);
groups.add(group2);
user.setGroups(groups) ;
userService.update(user);你设置的就一个关系,数据库肯定就一个值!
一般来说:你先查询出之前的groups,再把新想要添加的group放进去,然后更新操作。
每次一次操作都要先把原来的set查出来,然后再add进去吗?
这样会不会效率很低,不能直接只插入吗?
而且执行update(user)的时候,hibernate会先去更新一次user里面的字段(update user set xxx=xxx,...)
但是user值并没有改变啊,请问还有其他的方法来更新user和group的关联吗?
每次一次操作都要先把原来的set查出来,然后再add进去吗?
这样会不会效率很低,不能直接只插入吗?
而且执行update(user)的时候,hibernate会先去更新一次user里面的字段(update user set xxx=xxx,...)
但是user值并没有改变啊,请问还有其他的方法来更新user和group的关联吗?
第一个问题回答:如果你设置了级联关系,user对象已经包含了group的set,新添加add,只需要user.getGroups.add(新的);
如果你不查出来,程序如何知道,你不是想要删除旧的记录,而是想要新添加呢??
第二个问题:性能方面,如果关联表设置的当,原有记录存在,只会添加新的,不会删除旧的;不存在你说的性能问题!第三点:优化方面 我是有一些方法,但是 很久没留意了 怕印象有误。 所以我想说的是,Hibernate本身就是面向对象的ORM,如想精准控制,就用JDBC吧,Hibernate不是不能,可以通过配置文件配置,但有些复杂,得不偿失;没有必要为这点性能顾虑太多,若是真要求高性能,Hibernate肯定不会用的
每次一次操作都要先把原来的set查出来,然后再add进去吗?
这样会不会效率很低,不能直接只插入吗?
而且执行update(user)的时候,hibernate会先去更新一次user里面的字段(update user set xxx=xxx,...)
但是user值并没有改变啊,请问还有其他的方法来更新user和group的关联吗?
第一个问题回答:如果你设置了级联关系,user对象已经包含了group的set,新添加add,只需要user.getGroups.add(新的);
如果你不查出来,程序如何知道,你不是想要删除旧的记录,而是想要新添加呢??
第二个问题:性能方面,如果关联表设置的当,原有记录存在,只会添加新的,不会删除旧的;不存在你说的性能问题!第三点:优化方面 我是有一些方法,但是 很久没留意了 怕印象有误。 所以我想说的是,Hibernate本身就是面向对象的ORM,如想精准控制,就用JDBC吧,Hibernate不是不能,可以通过配置文件配置,但有些复杂,得不偿失;没有必要为这点性能顾虑太多,若是真要求高性能,Hibernate肯定不会用的
谢谢,已经搞定它现在直接插入了
但是有没有办法不去执行上边那条upadte直接执行insert啊