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>

本文介绍Hibernate框架中如何通过设置inverse属性来优化一对多或多对一关联关系中的外键维护方式,减少SQL语句数量,从而提升系统性能。
1687

被折叠的 条评论
为什么被折叠?



