数据访问:JPA

1.JPA是什么

JPA(Java Persistence API)
意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范,JPA的出现主要是为了简化持久层开发以及整合ORM技术,结束Hibernate、TopLink、JDO等ORM框架各自为营的局面。JPA是在吸收现有ORM框架的基础上发展而来,易于使用,伸缩性强。
总的来说,JPA包括以下3方面的技术:
ORM映射:支持XML和注解描述对象和表之间的映射关系
API:操作实体对象来执行CRUD(create read update delete)(增删改查)操作
查询语言:通过面向对象而非面向数据库的查询语言(JPQL)查询数据

2.Spring Data JPA

Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。Spring Data JPA不需要过多的关心Dao层的实现,只需关注我们继承的接口,按照一定的规则去编写我们的接口即可,spring会按照规范动态生成我们接口的实现类进行注入,并且实现类里包含了一些常规操作的方法实现。如果使用JPA提供的接口来操作ORM框架,可以不写任何实现就能对数据库进行CRUD操作,还可以进行简单的分页,排序操作。

3.Spring Data Jpa核心接口(API)

Repository:
所有接口的父接口,而且是一个空接口,目的是为了统一所有Repository的类型,让组件扫描的时候能进行识别。

CrudRepository:
是Repository的子接口,提供CRUD(增删改查)的功能。

PagingAndSortingRepository:
是CrudRepository的子接口,添加分页和排序的功能。

JpaRepository:

是PagingAndSortingRepository的子接口,增加了一些实用的功能,例如批量操作。

JpaSpecificationExecutor

用来做负责动态条件查询的接口。

Specification

是Spring Data JPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可。

4.Spring Data Jpa的使用

<!-- c3p0数据库连接池 -->
	<dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>${c3p0.version}</version>
    </dependency>

	<!-- spring-data-jpa -->
	<dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.9.0.RELEASE</version>
    </dependency>

2.在spring核心配置文件中配置spring-data-jpa相关项

applicationContext.properties

与Mybatis配置一样

mybatis.type-aliases-super-type=com.bdqn.t369spingboot.entity.User
spring.application.name=T369-Spring-Boot
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/crm?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456

mybatis.config-location=classpath:mybatis/mybatis-config.xml
#mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis.type-aliases-package=com.bdqn.t369spingboot.entity

logging.level.root=warn
logging.level.com.bdqn.t369spingboot.mapper=trace
logging.pattern.console=%p%m%n

#??JPA(Hibernate)????

#spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

3.编写实体类并使用JPA注解配置实体类和数据库表的映射关系 

@Entity
@Table(name = "sys_user")
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "usr_id")
    private Long usrId;
    @Column(name = "usr_name")
    private String usrName;
    @Column(name = "usr_password")
    private String usrPassword;
    @ManyToOne(targetEntity = Role.class)
    @JoinColumn(name = "usr_role_id")
    private Role role;
    @Column(name = "usr_role_id")
    private Long usrRoleId;
    @Column(name = "usr_flag")
    private Integer usrFlag;

常见问题

JPA 和 Hibernate 有什么区别?

JPA 是一个 Java 持久化框架,它提供了一种标准的方式来访问和操作数据库。Hibernate 是一个实现了 JPA 的持久化框架,它是 JPA 的一个实现。

JPA 和 Spring Data JPA 有什么区别?

PA 是一个 Java 持久化框架,它提供了一种标准的方式来访问和操作数据库。Spring Data JPA 是 Spring 数据访问层的一部分,它提供了一种更简洁的方式来使用 JPA。

JPA 和 MyBatis 有什么区别?

JPA 是一个 Java 持久化框架,它提供了一种标准的方式来访问和操作数据库。MyBatis 是一个基于 XML 的持久化框架,它提供了一种更灵活的方式来访问和操作数据库

 

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值