Hibernate 控制反转(Inverse 详解)

本文深入探讨了使用Hibernate时如何通过控制反转优化代码性能,特别是针对People和Address实例之间的关联关系。通过在配置文件中添加特定参数,实现了性能提升,避免了不必要的数据库操作,从而显著减少了资源消耗。
摘要由CSDN通过智能技术生成

接触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 语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值