Hibernate框架利用inverse属性提高系统性能

Hibernate框架实体类在创建对应的数据库表时,无论是一对多还是多对一关联关系,采取的都是双向外键维护,虽然双向外键维护使用起来比较方便,但是,双向外键会浪费更多的资源即对外键的修改会用两次操作,通过在<set>标签里面设置inverse属性可以使“一”的那一方放弃对外键的维护,可以使系统对外键只进行一次修改,同样相应生成的SQL语句也会由两条减少到一条,当这种情况足够多时会使系统的性能得到极大的提高。

例如Hibernate框架的有两个实体类Company()和Employee( ),这两个实体类生成的对应的数据库表为表company和表employee。表company中有两个数据(1,腾讯)和(2,阿里巴巴)(1,2数字表示是主键);表employee中有一条数据(一,小朱,1)(一表示主键,1表示外键对应company中的主键,表示就职公司),当这个员工小猪从腾讯跳槽到阿里巴巴的时候,如果采用的是双向外键维护,会对company和employee两个表中的有关外键的地方同时做改变,因此相应生成的SQL语句也有两条,此时如果让“一”的一方即company放弃对外键的维护,可以使修改只在employee表中的数据即将(一,小朱,1)直接将1变为2,生成的SQL语句也只有一条更新语句。

对inverse属性的设置也是在响应的“一”实体类对应的映射文件之中(默认情况下inverse是关闭的):
<set  name="员工"  inverse="true">
    <key  column="外键">
    <one-to-many class="员工类的全路径">
</set>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值