美文网首页
从MyBatis 回到 spring boot JPA(hibe

从MyBatis 回到 spring boot JPA(hibe

作者: 大继 | 来源:发表于2019-11-22 22:13 被阅读0次

    前言

    • 从mybatis 用会hibernate ,会变的非常的不习惯,此文介绍mybatis的常用以hibernate 方式表达。及比较重要的点,详细实现需要读者根据自己的水平补习。
    • 在某客时间里也看到误人子弟的教学,Spring Boot JPA 完全可以解决的情况下还去使用第三方包,我表示这个同学有半桶水的嫌疑。

    一,mybatis 和hibernate 的优缺点

    • mybatis 在实现的时候,可以完全用自己喜欢的方式进行设计表和表之间的关系,对于性能的控制和关联关系都可以天马行空,相对的代码也需要比较多的定义。
    • JPA(hibernate) 拥有一定约束,减少了大量的代码,缺点就是学习成本比较高。顺着他就好,都可以解决。

    二,开始使用Spring boot 必须知道DDL(自动建表),和JpaRepository的使用,瞬间提高开发过程。降低对数据库感知,非常符合spring boot 的设计理念。专注业务就好。

    • 1,使用注解完成,实体和库的对应关系
    • 2, 打开自动创建表
    # 打开自动生成表,只进行更新,添加,不进行减少比较安全,需要删除字段手工即可
    spring.jpa.hibernate.ddl-auto: update
    
    • 3,继承JpaRepository<Article,String > 即可实现curd 非常清
    @Repository
    public interface ArticleRepository extends JpaRepository<Article,String >,JpaSpecificationExecutor<Article> {
    }
    

    三, 动态查询,让编码更加清心,根据业务编码就好

    • JpaSpecificationExecutor 支持了动态组合条件,这也让编码很不舒服,是个苦力力活,经过一番调查,我找到了一个叫RSQL 的Specification 生成器,有兴趣的伙伴可以去了解一下。

    四,关联查询@EntityGraph

    • 1,由于所有的关联表默认都是lazy , 更加业务需求,使用EntityGraph 加载相关类。

    五 ,ONE-TO-ONE,ONE-TO-MANY,MANY-TO-ONE,MANY-TO-MANY

    • 1, 原本的我遵循默认就是最优,但是他会加外链,影响性能不说还影响清表时的不便,所以在 表管理我的加上了 @JoinColumn(foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT)) 去除外联。
    • 2、这个关联的所有配置一定要好好记下来,开发设计才能顺畅。

    六、特殊情况下部分更新

    • 在数据表存在大内容的时候需要加上@DynamicUpdate 来减少不需要更新的字段,因为jap repository.save 默认都是全表更新。

    总结

    比起mybatis,hibernate 给了一套很好的规范给我们,减少很多编码量。代价就是增加学习成本。基本遵循默认配置。

    相关文章

      网友评论

          本文标题:从MyBatis 回到 spring boot JPA(hibe

          本文链接:https://www.haomeiwen.com/subject/claqwctx.html