最详细的Spring-data-jpa入门(一)

在这里插入图片描述

从入门到入土

刚进公司,人生地不熟,偷偷藏着本《mybatis入土为安》,以为可以靠mybatis混的轻松点,谁知天有不测风云,大家用的是JPA。

啥是JPA?

我这个小白没有听说过,全英文名叫Java Persistence API,就是java持久化api,是SUN公司推出的一套基于ORM的规范。

持久化想必如雷贯耳,都0202年了,谁还不用个持久化框架啊,举起mybatis。

ORM呢?全英文名为Object-Relational Mapping:对象关系映射,简单来说为了不用JDBC那一套原始方法来操作数据库,ORM框架横空出世(mybatis、hibernate等等)。

然而ORM框架出的太多了,百花齐放,琳琅满目,你一套标准我一套标准,要是想换一套框架实现项目,可能要从头再写。啊这?入土吧。

百度这样介绍SUN的JPA规范:

Sun引入新的JPA ORM规范出于两个原因:

其一,简化现有Java EE和Java SE应用开发工作;

其二,Sun希望整合ORM技术,实现天下归一。

有气魄,我喜欢,学他丫的。

spring-data-jpa

学jpa哪家强?哪家简单学哪家,spring-data-jpa最简单。介绍如下:

Spring Data JPA是Spring Data家族的一部分,可以轻松实现基于JPA的存储库。 此模块处理对基于JPA的数据访问层的增强支持。 它使构建使用数据访问技术的Spring驱动应用程序变得更加容易。

总的来说JPA是ORM规范,Hibernate、TopLink等是JPA规范的具体实现,这样的好处是开发者可以面向JPA规范进行持久层的开发,而底层的实现则是可以切换的。Spring Data Jpa则是在JPA之上添加另一层抽象(Repository层的实现),极大地简化持久层开发及ORM框架切换的成本。

也就是如下图所示:

在这里插入图片描述

配置环境

话不多说,使用Maven管理包,使用springboot框架,建个空maven项目就行

POM信息

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencies>
        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--spring-data-jpa-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!--druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.23</version>
        </dependency>
        <!--oracle桥接器-->
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

    </dependencies>

看到lombok没?记得下插件,好用滴很。

application.yml

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:oracle:thin:@localhost:1521:XE
    username: JPADEMO
    password: oracle
    driver-class-name: oracle.jdbc.OracleDriver
  jpa:
    hibernate:
      ddl-auto: update #自动更新
    show-sql: true  #日志中显示sql语句
  application:
    name: spring-data-jpa-demo
server:
  port
### Spring Data JPA 入门教程 #### 创建 Maven 或 Gradle 项目结构 为了开始使用 Spring Data JPA,首先需要设置好开发环境。这通常意味着创建个新的 Maven 或 Gradle 项目,并添加必要的依赖项来支持 Spring BootSpring Data JPA 功能。 对于 Maven 用户,在 `pom.xml` 文件中加入如下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 而对于 Gradle 用户,则应在 `build.gradle` 中添加相应的行: ```groovy implementation 'org.springframework.boot:spring-boot-starter-data-jpa' ``` #### 定义实体类 定义个简单的 Java 类作为持久化对象模型的部分。例如,可以基于给定的图书类例子[^3] 来构建自己的实体类。注意这里的注解用于指定表名、字段映射以及关系管理等细节。 ```java @Getter @Setter @Entity public class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer bookId; private String bookName; private Float price; private Date pubdate; @ManyToOne(fetch = FetchType.LAZY) private Author author; } ``` #### 配置数据源和 JPA 设置 在应用程序属性文件 (`application.properties`) 中提供连接到目标数据库所需的信息。如果希望简化初期的学习过程,可以选择内存型数据库如 H2 数据库来进行练习,这样就不必担心实际部署中的复杂配置问题[^2]。 ```properties spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password spring.jpa.database-platform=org.hibernate.dialect.H2Dialect ``` #### 编写 Repository 接口 接下来就是实现 DAO (Data Access Object) 层了。按照所提供的代码片段[^4] ,只需继承自 `JpaRepository<T, ID>` 即可获得组丰富的 CRUD 方法集合而不需要额外编写任何 SQL 查询语句。 ```java @Repository public interface UserRepository extends JpaRepository<User, String> {} ``` 同样地,针对上面提到过的书籍实体也可以建立对应的仓库接口: ```java public interface BookRepository extends JpaRepository<Book, Integer> {} ``` #### 测试功能 完成上述准备工作之后便可以通过 RESTful API 或者命令行工具 POSTMAN 对服务端点发起请求验证各项操作是否正常工作[^1] 。此外还可以利用内置的支持机制快速执行单元测试而不必真的启动整个应用上下文环境。
评论 95
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值