Hibernate和Mybatis的区别

本文探讨了MyBatis与Hibernate两大持久层框架的区别。从技术角度分析了两者在SQL编写方式、代码生成机制及维护难易度上的不同。MyBatis支持手动编写SQL语句并映射到Java对象,灵活性高;而Hibernate采用HQL查询,自动化程度更高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  前边我们讲过了Mybatis框架的逆向工程,即通过数据库中的表来生成对应的Java代码,Java代码包括POJO类、Mapper接口和Mapper.xml映射文件。只需要配置好heneratorConfig.xml中的数据库连接属性、数据库中对应的表和生成Java代码所在的然后运行GeneratorSqlmap类中的main方法就可以生成Java的代码了。

  学习过了两个持久层的框架Hibernate和Mybatis,今天我们从技术选型的角度来区分一下这两个持久层框架的异同。

  首先需要关注的是二者的本质区别,Hibernate是一个ORM框架(对象关系映射),是不需要写SQL的,它只是需要编写一种面向对象的SQL语句,所以当他执行数据库操作的时候,程序向数据库发出的SQL它是很难修改的,这也是它的缺点,即不够灵活。而Mybatis则不容,它需要程序员来编写SQL,并且对输入参数与SQL参数之间、查询结果和Java的POJO对象之间通过mapper.xml的方式进行了映射,所以他是一个半ORM类型的持久层框架。

  Hibernate的HQL查询语言使用了硬编码,且是写在Java代码中,这样一旦我们需要修改,那么就要重新编译Java代码,当一个Java工程体量很大时,就会浪费很多时间,而Mybatis将SQL语句写在了mapper.xml配置文件中,我们修改过后不需要重新编译Java代码就可以重新执行,利于维护和修改。

  其次Hibernate可以通过编写好的Java对象生存对应的数据库的表格,而Mybatis可以通过逆向工程将数据库中的表格生成对应的Java代码,Mybatis的实用性较高,因为我们在实际项目中可以通过UML工具如PowerDesigner来生成数据库表格,然后通过数据库表格生成Java代码,之后改一改就可以使用了,很省事。

  但其实Hibernate没有网络上没有对应的逆向工程直接让我们使用,但是他提供了了个Hibernate tools可以让我们来使用,并且逆向生成的代码不需要hbm.xml文件,可以直接使用注解的方式对pojo和数据库表格的内容完成映射。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值