jdbc,jpa,spring data jpa,hibernate,mybatis区别

概述

jdbc是java连接数据库操作的原生接口

jpa是java持久化规范,是orm框架的标准,主流orm框架都实现了这个标准

spring data jpa是对jpa规范的再次抽象,底层还是用的实现jpa的hibernate技术

hibernate是一个标准的orm框架,实现了jpa

mybatis也是一个持久化框架,但不完全是一个orm框架,不是依照的jpa规范。

什么是orm?

orm(Object Relation Mapping) 对象关系映射,是对象持久化的核心,是对jdbc的封装。

hibernate VS mybatis VS jdbc

jdbc是比较底层的数据库操作方式,hibernate和mybatis都是在jdbc的基础上进行了封装。

hibernate是将数据库中的数据表映射为持久层的java对象,实现对数据表的完整性控制。hibernate的主要思想是面向对象,标准的orm。不建议自己写sql语句,如果确实有必要推荐hql代替。hibernate是全表映射,只需提供java bean和数据库表映射关系,

mybatis是将sql语句中的输入参数parameterMap和输出结果resultMap映射为java对象,放弃了对数据表的完整性控制,获得了更大的灵活性。mybatis拥抱sql,在sql语句方面有更大的灵活性,mybatis不是面向对象,不是标准的orm,更像是sql mapping框架。mybatis是半自动的,需要提供java bean,sql语句和数据库表的映射关系。

开发难度:

Hibernate因为是封装了完整的对象关系映射,内部实现比较复杂,学习周期大。

mybatis主要是配置文件中sql语句的编写

spring data上手快,通过命名规范,注解查询可简化操作

总结

如果是进行底层编程,需要对性能要求高,应采用jdbc方式。

如果直接操作数据库表,没有过多的定制,建议使用hibernate方式。

如果要灵活使用sql语句,建议采用mybatis方式。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot可以很方便地整合JPAMyBatis。 整合JPA: 1. 在pom.xml中添加JPA依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. 配置数据源和JPA属性: ``` spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect ``` 3. 创建实体类和Repository接口: ``` @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "age") private Integer age; // getter和setter } public interface UserRepository extends JpaRepository<User, Long> { } ``` 4. 在Service中使用Repository: ``` @Service public class UserService { @Autowired private UserRepository userRepository; public User getUserById(Long id) { return userRepository.findById(id).orElse(null); } public void saveUser(User user) { userRepository.save(user); } public void deleteUserById(Long id) { userRepository.deleteById(id); } } ``` 整合MyBatis: 1. 在pom.xml中添加MyBatis依赖: ``` <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.</version> </dependency> ``` 2. 配置数据源和MyBatis属性: ``` spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.demo.entity ``` 3. 创建实体类和Mapper接口: ``` public class User { private Long id; private String name; private Integer age; // getter和setter } @Mapper public interface UserMapper { User getUserById(Long id); void saveUser(User user); void deleteUserById(Long id); } ``` 4. 在Service中使用Mapper: ``` @Service public class UserService { @Autowired private UserMapper userMapper; public User getUserById(Long id) { return userMapper.getUserById(id); } public void saveUser(User user) { userMapper.saveUser(user); } public void deleteUserById(Long id) { userMapper.deleteUserById(id); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值