个人技术总结

Posted fzhhj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了个人技术总结相关的知识,希望对你有一定的参考价值。

  1. hibernate实现数据库的删除,难点是外键的约束和删除方法的具体使用。

  2. 有School、 College、 Major 、UserIdentity四个类,School和College,College和Major都是一对多的关联,同时School、College、Major都和UserIdentity是一对多关联。如果我们直接删除School的一条记录会出现异常,提示外键约束,删除失败。

    使用hibernate的配置有两种解决方法

    @OneToMany(mappedBy = "schoolBySchoolId",orphanRemoval=true)
        public Collection<College> getCollegesById() {
            return collegesById;
        }
    
    
        @OneToMany(mappedBy = "schoolBySchoolId",cascade = CascadeType.REMOVE)
        public Collection<Useridentity> getUseridentitiesById() {
            return useridentitiesById;
        }
    
    1. orphanRemoval = true; 这个注解是自动删除外键为null的记录,当School的一条记录删除时,College表中的一些记录的School外键变为null,会被hibernate自动删除。

    2. cascade = CascadeType.REMOVE; 这个cascade属性是关联关系的级联属性,配置它的值为CascadeType.REMOVE即配置了级联删除,除此之外还有PERSIST(级联保存操作),MERGE(合并(merge=save+update)),REFRESH(级联刷新操作),DETACH(级联分离操作),ALL(所有级联操作)

    值得一提的是这两个属性都在一的那端进行配置

    我们配置了级联删除,只需要删除School就可以将对应的College和major删除。

    public boolean delete(Integer schoolId) {
            Session session = sessionFactory.getCurrentSession();
            School school = (School) session.load(School.class, schoolId);
            session.delete(school);
            return true;
        }
    

    其中的关键在于要先得到指定Id的对象,再进行删除,

    School school = (School) session.load(School.class, schoolId);就是为了得到School对象,

    对象的获取也可以通过hql语句或者sql语句查询数据库。

  3. 参考资料

    Hibernate4 注解配置实现一对多级联删除

以上是关于个人技术总结的主要内容,如果未能解决你的问题,请参考以下文章

个人技术总结—列表搜索

寒假中期考核个人总结

第五次个人作业:个人总结

python常用代码片段总结

《java精品毕设》基于javaweb宠物领养平台管理系统(源码+毕设论文+sql):主要实现:个人中心,信息修改,填写领养信息,交流论坛,新闻,寄养信息,公告,宠物领养信息,我的寄养信息等(代码片段

个人技术总结