Spring Boot 第4篇:SpringBoot 整合JPA

转载 2018年04月16日 16:59:48

JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

JPA 的目标之一是制定一个可以由很多供应商实现的API,并且开发人员可以编码来实现该API,而不是使用私有供应商特有的API。

JPA是需要Provider来实现其功能的,Hibernate就是JPA Provider中很强的一个,应该说无人能出其右。从功能上来说,JPA就是Hibernate功能的一个子集。

添加相关依赖

添加spring-boot-starter-jdbc依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa
    </artifactId>
</dependency>

添加mysql连接类和连接池类:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

配置数据源,在application.properties文件配置:

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
    username: root
    password: 123456

  jpa:
    hibernate:
      ddl-auto: update  # 第一次简表create  后面用update
    show-sql: true

注意,如果通过jpa在数据库中建表,将jpa.hibernate,ddl-auto改为create,建完表之后,要改为update,要不然每次重启工程会删除表并新建。

创建实体类

通过@Entity 表明是一个映射的实体类, @Id表明id, @GeneratedValue 字段自动生成

@Entity
public class Account {
    @Id
    @GeneratedValue
    private int id ;
    private String name ;
    private double money;

...  省略getter setter
}

Dao层

数据访问层,通过编写一个继承自 JpaRepository 的接口就能完成数据访问,其中包含了几本的单表查询的方法,非常的方便。值得注意的是,这个Account 对象名,而不是具体的表名,另外Interger是主键的类型,一般为Integer或者Long

public interface AccountDao  extends JpaRepository<Account,Integer> {
}

Web层

在这个栗子中我简略了service层的书写,在实际开发中,不可省略。新写一个controller,写几个restful api来测试数据的访问。

@RestController
@RequestMapping("/account")
public class AccountController {

    @Autowired
    AccountDao accountDao;

    @RequestMapping(value = "/list", method = RequestMethod.GET)
    public List<Account> getAccounts() {
        return accountDao.findAll();
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public Account getAccountById(@PathVariable("id") int id) {
        return accountDao.findOne(id);
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.PUT)
    public String updateAccount(@PathVariable("id") int id, @RequestParam(value = "name", required = true) String name,
                                @RequestParam(value = "money", required = true) double money) {
        Account account = new Account();
        account.setMoney(money);
        account.setName(name);
        account.setId(id);
        Account account1 = accountDao.saveAndFlush(account);

        return account1.toString();

    }

    @RequestMapping(value = "", method = RequestMethod.POST)
    public String postAccount(@RequestParam(value = "name") String name,
                              @RequestParam(value = "money") double money) {
        Account account = new Account();
        account.setMoney(money);
        account.setName(name);
        Account account1 = accountDao.save(account);
        return account1.toString();

    }

}

通过postman请求测试,代码已经全部通过测试。

源码下载:https://github.com/forezp/SpringBootLearning

SpringBoot非官方教程 | 第四篇:SpringBoot 整合JPA

JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA 的目标之一是制定一个可以由很多供应商实...
  • forezp
  • forezp
  • 2017年04月23日 20:37
  • 32477

从零开始学spring-boot(2)-集成spring-data-jpa

springboot集成spring-data-jpa
  • u013257425
  • u013257425
  • 2016年10月30日 14:13
  • 2686

SpringBoot-SpringData-JPA集成

数据库访问这一层 常用的方式有:JdbcTemplate ,SpringData-JPA, MyBatis 今天我们说一下SpringData-JPA, 使用上一篇SpringBoot-JUnit作...
  • ABAP_Brave
  • ABAP_Brave
  • 2016年10月13日 10:34
  • 9309

spring boot 整合spring data jpa

本文结构: - 什么是springdata jpa - springboot 整合spring data jpaSpring Data Repository的核心接口是Repository(好像也...
  • u012373815
  • u012373815
  • 2016年11月20日 16:38
  • 17640

Spring Boot整合jpa,Shiro进行权限管理

转:http://412887952-qq-com.iteye.com/blog/2299777 本来想写一篇spring boot整合Shiro实现权限验证的文章,发现这篇写的非常不错,就直接...
  • liuchuanhong1
  • liuchuanhong1
  • 2017年07月27日 12:24
  • 3130

spring-boot入门整合jpa基于maven

先附上项目代码结构 pom文件配置:   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apac...
  • a295277302
  • a295277302
  • 2017年06月06日 23:12
  • 1903

Spring Boot 系列(九)数据层-集成Spring-data-jpa

实际开发中,不可避免地会对数据进行反复的增删改查操作,然而这部分工作是十分繁琐枯燥的。那么,随即而生的ORM框架就能很好的解决这个问题。我们常用的ORM框架有:Hibernate、Mybatis、Jp...
  • sinat_14982831
  • sinat_14982831
  • 2017年07月19日 14:28
  • 1043

springboot集成hibernate-jpa方式

1、maven依赖    org.springframework.boot    spring-boot-starter-data-jpa    mysql    mysql-...
  • qq_21033663
  • qq_21033663
  • 2017年06月12日 22:10
  • 4838

spring boot 整合redis,jpa

第一步:在配置文件(application.properties)中添加以下配置选项: # Redis server index spring.redis.database=0 spring.r...
  • fafa211
  • fafa211
  • 2018年01月10日 14:23
  • 530

spring-boot集成H2内存数据库

spring-boot集成H2内存数据库
  • zhangjq520
  • zhangjq520
  • 2016年12月29日 17:52
  • 5782
收藏助手
不良信息举报
您举报文章:Spring Boot 第4篇:SpringBoot 整合JPA
举报原因:
原因补充:

(最多只允许输入30个字)