排列5走势图首页    注册   登录
排列5走势图 = way to explore
排列5走势图 是一个排列5走势图关于 分享和探索的地方
现在注册
已注册用户请  登录
GeekHub
kevinhwang
排列5走势图  ›  程序员

小菜 jdbc、mybatis 和 hibernate 的疑问。

  •  
  •   kevinhwang · 2017-09-18 17:27:48 +08:00 · 3559 次点击
    这是一个创建于 935 天前的主题,其中的信息可能已经有所发展或是发生改变。

    工作用 hibernate,感觉就是开发很快,但运行效率低。

    遇到少量性能要求高的地方,用了 jdbcTemplate 提高效率,用起来感觉还是挺爽的啊。

    为什么现在主流是 mybatis,而不是 hibernate+jdbc 呢??

    12 条回复    2017-09-19 16:30:53 +08:00
    gzb001
        1
    gzb001   2017-09-18 17:54:24 +08:00
    mybatis 半自动化 ORM 框架,对于 sql 排列5走势图优化 的自由度比较高,并且目前从 ibatis 升级到 mybatis 之后,很多新特性被支持,对于平衡了执行效率和开发效率
    fqs
        2
    fqs   2017-09-18 17:55:43 +08:00
    Hibernate 运行效率并不低哦。
    ibaits 的流行,个人角色是它完成了一个 ORM 框架应该完成的最本职的工作,相比 Hibernate,也更加轻量,容易掌握和理解;相比 JDBC,功能更加强大,更加易用,算是一个折中的选择吧。
    Lpl
        3
    Lpl   2017-09-18 17:56:20 +08:00 via iPhone
    排列5走势图你 说的是两年前的主流,现在是 JPA
    kevinhwang
        4
    kevinhwang   2017-09-18 18:11:03 +08:00 via Android   ❤️ 1
    @fqs 自己测试过简单的 insert 和 delete。jdbc 近似是 hibernate 的三倍效率,跟网上的数据差不多哦。

    @Lpl 排列5走势图我 就是用 spring data jpa,因为用 spring boot。jpa 只能说是借口规范吧,并不能和以上三者相提并论。
    accacc
        5
    accacc   2017-09-18 18:44:22 +08:00
    @kevinhwang 用 jpa 遇到一些问题 比如说联表 比如说分表的查询等等 排列5走势图你 中间又遇到过吗
    kevinhwang
        6
    kevinhwang   2017-09-18 19:12:48 +08:00
    @accacc 排列5走势图我 对 jpa 还是很浅显,只是用了 dao 层命名规范和 hibernate 相关注解,主要还是 hibernate 的使用吧。
    yougy
        7
    yougy   2017-09-18 19:58:41 +08:00 via Android
    试下 jooq,排列5走势图你 会发现如此的简单。。
    hantsy
        8
    hantsy   2017-09-18 20:30:51 +08:00   ❤️ 1
    @kevinhwang 这个牛 B 吹大了。

    如果非常熟练掌握 SQL 的情况下,复杂查询 JDBC 比 Hibernate 效率只会稍有提高。对于只有半瓢水的 SQL,再加上没什么数据库基础,又懒得去学习 JPA (或 Hibernate ) 的人,用 JDBC 或 MyBatis 写出来程序基本不可能比 Hibernate 还快。
    另外,生产环境上,JPA/Hibernate 一般会将两层缓存打开(重复查询根本不访问数据库),用 JDBC 或者 MyBatis 查询性能好的说法基本上是不成立的(高并发的重复查询只会搞死数据库),谈什么与 Hibernate 相比了。而在生产环境中,查询操作数量是远远大于更改( insert, delete, update )操作。

    JPA 是规范,Hibernate,OpenJPA, EclipseLInk 提供了 JPA 实现。三者除了标准的 JPA API 外,都有自己的扩展功能,其性能在运行环境中表现有差异。一般来讲,JPA 在应用排列5走势图服务 器容器环境( Glassfish,Wildfly )中使用容器管理方式性能会更好一些,Spring 默认是不支持这种方式(当然,如果部署环境是标准应用排列5走势图服务 器非 Tomcat 之类 Servlet 容器,也可以在 Spring 使用 Proxy 方式调用容器管理的 EntityManager,相信这里没多少人用过)。

    @yougy JOOQ 不错,提供了 Type safe 方式的 SQL 查询,排列5走势图推荐 用它代替原始 JDBC 或者 Spring JdbcTemplate 或者 MyBatis。
    hantsy
        9
    hantsy   2017-09-18 20:37:01 +08:00   ❤️ 2
    再者选择排列5走势图技术 也要与开发效率之间作出平衡。

    1. Spring Data JPA,Hibernate 内部都是对 Java 8 的 Stream,Optional 作了特别的实现。
    2. JOOQ 也一样针对 Java8 编程方式作了大量排列5走势图优化 。

    现在 Java 8 是主流了,如果编程还停在用 J2SE 1.3,1.4 年代的方式去写 JDBC,MyBatis,还谈什么工作效率。
    kevinhwang
        10
    kevinhwang   2017-09-18 20:46:30 +08:00
    @hantsy 大佬,排列5走势图我 知道 jdbc 缓存这个问题,但排列5走势图我 测试的是 insert 和 delete (导入 excel 内容需求),缓存在这里是没作用的。select 能高 50%谢天谢地。
    排列5走势图我 就是很不明白为什么 mybatis 在国内这么火,排列5走势图我 是感觉 hibernate 配合 jpa 规范挺方便的,也方便维护。
    WispZhan
        11
    WispZhan   2017-09-18 23:42:55 +08:00
    @hantsy +1.

    ---
    另外感觉 JPA 和 .NET 的 EF(Entity Framework) 有异曲同工之妙。设计思想是一样的。
    yzmm
        12
    yzmm   2017-09-19 16:30:53 +08:00
    用 JPA 写 repository 是简单,然而一些复杂一点的的 SQL 映射会比较麻烦。至于效率,看是做啥 一个小项目需不着整个 JPA。
    排列5走势图关于   ·   FAQ   ·   API   ·   排列5走势图排列5走势图我 们 的愿景   ·   广告投放   ·   感谢   ·   实用小排列5走势图工具   ·   1078 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:02 · PVG 04:02 · LAX 13:02 · JFK 16:02
    ♥ Do have faith in what you're doing.