`

深入浅出学Spring Data JPA

 
阅读更多
http://blog.csdn.net/wangpeng047/article/details/17038659

以前没怎么用过mybatis,只知道与hibernate一样是个orm数据库框架。随着使用熟练度的增加,发现它与hibernate区别是非常大的,结合至今为止的经验,总结出以下几点:
1. hibernate是全自动,而mybatis是半自动。
hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。
2. hibernate数据库移植性远大于mybatis。
hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(oracle、mysql等)的耦合性,而mybatis由于需要手写sql,因此与数据库的耦合性直接取决于程序员写sql的方法,如果sql不具通用性而用了很多某数据库特性的sql语句的话,移植性也会随之降低很多,成本很高。
3. hibernate拥有完整的日志系统,mybatis则欠缺一些。
hibernate日志系统非常健全,涉及广泛,包括:sql记录、关系异常、优化警告、缓存提示、脏数据警告等;而mybatis则除了基本记录功能外,功能薄弱很多。
4. mybatis相比hibernate需要关心很多细节
hibernate配置要比mybatis复杂的多,学习成本也比mybatis高。但也正因为mybatis使用简单,才导致它要比hibernate关心很多技术细节。mybatis由于不用考虑很多细节,开发模式上与传统jdbc区别很小,因此很容易上手并开发项目,但忽略细节会导致项目前期bug较多,因而开发出相对稳定的软件很慢,而开发出软件却很快。hibernate则正好与之相反。但是如果使用hibernate很熟练的话,实际上开发效率丝毫不差于甚至超越mybatis。
5. sql直接优化上,mybatis要比hibernate方便很多
由于mybatis的sql都是写在xml里,因此优化sql比hibernate方便很多。而hibernate的sql很多都是自动生成的,无法直接维护sql;虽有hql,但功能还是不及sql强大,见到报表等变态需求时,hql也歇菜,也就是说hql是有局限的;hibernate虽然也支持原生sql,但开发模式上却与orm不同,需要转换思维,因此使用上不是非常方便。总之写sql的灵活度上hibernate不及mybatis。

总结:
mybatis:小巧、方便、高效、简单、直接、半自动
hibernate:强大、方便、高效、复杂、绕弯子、全自动

mybatis:
1. 入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。
2. 可以进行更为细致的SQL优化,可以减少查询字段。
3. 缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。
4. 二级缓存机制不佳。
hibernate:
1. 功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。
2. 有更好的二级缓存机制,可以使用第三方缓存。
3. 缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。
举个形象的比喻:
mybatis:机械工具,使用方便,拿来就用,但工作还是要自己来作,不过工具是活的,怎么使由我决定。??
hibernate:智能机器人,但研发它(学习、熟练度)的成本很高,工作都可以摆脱他了,但仅限于它能做的事。??
分享到:
评论

相关推荐

    尚硅谷 佟刚 spring_data+jpa pdf 资源

    佟刚老师的课程深入浅出地讲解了Spring Data JPA的这些核心概念和用法,包括实体映射、查询方法、复杂查询、事务管理等多个方面,是学习和掌握Spring Data JPA的绝佳参考资料。通过阅读这份PDF,读者不仅可以理解...

    深入浅出Spring Boot 2.x(杨开振著)项目代码

    《深入浅出Spring Boot 2.x》是杨开振先生撰写的一本关于Spring Boot的权威指南,这本书旨在帮助读者深入理解并熟练运用Spring Boot 2.x框架。在压缩包文件中,包含了从第一章到第十七章的所有项目源码,这为读者...

    Spring Boot 2.X 实战教程.pdf

    本课程内容包括Spring简介、Spring Boot简介、安装JDK、安装Maven、第一...Spring Data JPA代码、Spring Data JPA增删改查实例、安装Redis和可视化客户端、Redis缓存配置、Redis缓存实例、Redis消息、测试Spring Boot...

    Spring Data JPA精讲

    总的来说,《Spring Data JPA精讲》是一门深入浅出的课程,旨在帮助Java开发者熟练运用Spring Data JPA进行数据库操作,提升开发质量和效率,从而在职业发展道路上更进一步。通过学习这门课程,你将具备使用Spring ...

    spring boot 深入浅出源码

    《Spring Boot 深入浅出源码解析》 Spring Boot是Java开发中的一个关键框架,它极大地简化了创建和配置基于Spring的应用程序。在深入理解Spring Boot的源码时,我们首先要明白其核心设计理念——“约定优于配置”。...

    JPA教程JPA教程JPA教程

    在实际应用中,JPA通常与Spring框架结合使用,通过Spring Data JPA提供更高级别的抽象,简化了持久层的实现。Spring Data JPA允许开发者通过定义Repository接口,自动实现CRUD(创建、读取、更新、删除)操作,甚至...

    浅谈Spring Data如何简化数据操作的方法

    本篇文章将深入探讨Spring Data如何简化数据操作的方法。 首先,Spring Data支持多种NoSQL数据库,例如MongoDB(文档数据库)、Neo4j(图形数据库)、Redis(键/值存储)和Hbase(列族数据库),同时也支持关系数据...

    跟我学spring3

    《跟我学Spring3》是一本深入浅出的Spring框架学习指南,主要针对Spring 3.x版本进行详细讲解。Spring作为Java领域最流行的轻量级框架,它的应用广泛且功能强大,涵盖依赖注入、AOP(面向切面编程)、数据访问、Web...

    spring学习.zip

    2. **《深入浅出MyBatis技术原理与实战 541832.pdf》**:虽然这本书主要聚焦于MyBatis,但因为Spring与MyBatis的常用结合,理解MyBatis对于Spring开发者也至关重要。书中将详细介绍MyBatis的配置、映射文件、动态SQL...

    springDemo 一看即会

    本篇将通过一个名为"SpringWebDemo"的简单示例,深入浅出地介绍Spring的核心概念和技术,帮助读者快速理解和掌握Spring的应用。 首先,我们来看看Spring的核心——依赖注入(Dependency Injection,简称DI)。在...

    架构探险_从零开始学spring

    《架构探险:从零开始学Spring》是一本深入浅出的Spring框架学习指南,作者通过细致入微的讲解,带领读者逐步掌握Spring的核心概念和技术。Spring作为Java领域最流行的轻量级框架,其广泛应用于企业级应用开发,是...

    spring-boot实战PDF 完整版和随书源码.7z

    这本书深入浅出地介绍了如何使用Spring Boot构建高效、简洁的Java应用程序。随书源码提供了丰富的示例,使读者能够通过实际操作加深理解。 Spring Boot是由Pivotal团队开发的用于简化Spring应用初始搭建以及开发...

    spring boot2.x 书籍

    《深入浅出Spring Boot 2.x》这本书是针对Spring Boot 2.x版本的全面解析,旨在帮助开发者深入了解和熟练掌握这一流行的Java开发框架。Spring Boot以其便捷的起步配置、自动配置特性以及开箱即用的功能,极大地简化...

    Spring Boot2 教程.pdf.zip

    本教程涵盖了Spring Data JPA和MyBatis两大主流持久层框架的集成与使用,包括实体类设计、Repository接口实现、事务管理等内容。同时,教程还将讲解如何使用H2内存数据库进行单元测试,以提高开发效率。 RESTful ...

    spring开发指南(夏昕)

    《Spring开发指南(夏昕)》是一本专为开发者准备的深入浅出的Spring框架学习资料,由知名技术专家夏昕编写。这本书旨在帮助读者理解并掌握Spring框架的核心概念、特性和最佳实践,从而在实际项目开发中游刃有余。 ...

    Learning Spring Boot 2.0 Second Edition

    《Learning Spring Boot 2.0 Second Edition》是学习Spring Boot 2.0的重要参考资料,它深入浅出地介绍了这个流行的Java开发框架的核心概念和技术。Spring Boot简化了Spring应用程序的初始搭建以及开发过程,旨在...

    spring技术手册

    这个名为“spring技术手册”的压缩包,包含四本深入浅出的Spring技术指南,旨在帮助开发者从初学者到专家全面掌握Spring框架。 第一本可能涵盖了Spring的基础知识,包括环境配置、Spring的核心概念,如IoC容器、...

    PDF-JustSpringDataAccess-英文版.rar

    这本书深入浅出地讲解了如何利用Spring Data Access组件进行高效的数据操作,包括ORM(对象关系映射)框架、JDBC、事务管理以及NoSQL数据库的集成等。 1. **Spring Framework基础**:Spring作为Java领域的一个重量...

    Spring Boot 2 Cookbook 第二版

    《Spring Boot 2 Cookbook 第二版》是一本针对Java开发者极具价值的开发指南,它深入浅出地介绍了Spring Boot 2这一强大框架的使用方法。Spring Boot是Spring框架的一个子项目,旨在简化Java应用程序的初始搭建以及...

Global site tag (gtag.js) - Google Analytics