数据库模式:
Board(board_id) Article(article_id,board_id) Comment(comment_id, article_id)
设置级联删除,也就是删除Board时,会自动级联删除和Board关联的所有Article,以及和所有被删Article关联的所有Comment。
配置映射文件后,效果达到了,全部都级联删除了,但是生成的SQL语句非常怪异。
按预想来说,每部分的级联删除应该使用外键直接删除,如:
delete from article where board_id = ? delete from comment where article_id = ?
可是hibernate却使用主键删除,从而产生了非常多得sql语句,如:
delete from comment where comment_id = ? ... ... ... delete from article where article_id = ? delete from comment where comment_id = ? ... ... ... delete from article where article_id = ? ............ delete from board where board_id = ?
是配置的问题吗?还是hibernate就是这样操作的呢?、
如果是这样的话,删除关联众多的对象的话不是需要非常多得SQL语句,不是很影响性能么?
如何才能简化hibernate产生的sql语句呢?最好是通过配置hibernate实现。
如果这就是Hibernate的特性的话,那为什么要这么做呢?