接触Hibernate已经很久了,一直在copy代码,从来没有进行过具体分析配置的参数
何为控制反转, 比如 Poeple(人) 和 Address(地址) :一个人可以拥有多个地址,那么在配置的时候 在Poeple.hbm,xml 中 设置 one-To-Many (先不考虑Address配置文件) 那么Ok 当我们向People对象 添加 新的地址时 调用代码
People p = new People(“王三”);
Address address = new Address("公司地址");
p.getAddress().add(address) ;
save(p);
save(address);
当我们查看 控制台输出的语句会发现 有两个insert 语句 和一个 update 语句 显然这是非常消耗性能的 ,正确的应该是 只有两个 insert
现在我们分析下 hibernate 的操作 先保存了People 之后 保存了 Address 最后又修改了 Address 的 关联的peopleId 外键属性 这是由于Address 的外键值是由Poeple来控制的
现在我们在People 的 配置文件中 加上 inverse="true" 在执行上诉步骤 会发现 只有两条Insert 语句