Spring Boot JPA 连接数据库
来源:互联网 发布:头影测量软件 编辑:程序博客网 时间:2024/04/25 13:14
本文将介绍如何在Spring Boot 工程中添加JPA作为持久化方式。
修改 pom.xml 依赖
与上一篇介绍的 jdbc 不同的是 spring-boot-starter-jdbc 修改为 spring-boot-starter-data-jpa 即可,当然数据库驱动包也是不可少的,如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
注意:如果你想JDBC和JPA可以一起使用,Spring Boot 是支持的,你只需要把JDBC和JPA的依赖都添加在pom.xml 中即可。无需其他特殊处理,有关JDBC的使用介绍请看上一篇 “Spring-Boot JDBC 连接数据库”。
修改属性配置文件
在属性配置文件中添加 JPA 相关属性,注意这些并非必须,我们如果只添加dataSource 的 url\username\password\driver-class-name 也可以正常使用,有关JPA的其他配置都是可选的。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
熟悉JPA的根据名字应基本知道这些分别的作用了。
传统上,JPA实体类在persistence.xml文件中指定的。使用Spring Boot,这个文件是没有必要的,因为它使用“实体扫描”,默认情况下主配置 @EnableAutoConfiguration 或 @SpringBootApplication 下面的所有包都将会被扫描。任何使用注解 @Entity, @Embeddable 或 @MappedSuperclass 的类都将被管理。
Java代码实例
- 一个接口
- 一个Controller
我们创建一个接口 IScoreDao.java ,然后我们继承框架为我们提供好的接口 Repository 或 CrudRepository (CrudRepository 继承自 Repository),其中为我们提供了对数据库的基本操作方法。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
注意,如果你其中使用了修改、新增、删除操作,则必须要在接口上面或者对应的方法上面添加 @Transactional 注解,否则会抛出异常。
实体类 Score.java
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
ScoreController.java
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
然后在浏览器访问地址:http://localhost:8080/myspringboot/score/scoreList 测试。
最后要说明的是,Spring 会自动为我们继承CrudRepository接口的接口创建实现类。我们只需要在使用的时候直接使用注解 @Autowired 注入即可(IScoreDao 接口上也没有必要增加 @Component 、 @Repository 等注解)。
还有,我这里为了简单起见,直接将操作数据库的在Controller中使用,实际项目中,是不建议这样做的,IScoreDao 的所属角色是数据库持久,我们还应当有 Service(如ScoreService) 来调用 IScoreDao 的方法,然后在Controller 中调用 Service 中的方法。原因是因为,我们数据库访问层,都是接口定义方法,上面注解注入SQL和参数,没有具体的代码逻辑处理。如果我们想在执行SQL之前或之后执行逻辑处理,只能在 Service 中或者Controller(不建议)中。
我们严格按照这种方式去做(持久层只与SQL有关,通过接口定义无逻辑处理),这样才是彻彻底底的持久层。越严格的规范制度,在某种程度上来说其实越有利于代码的管理和项目代码的迭代发展。
当然,如果你实在想要实现自己的 class 实现类,下面会附上一个实例代码,在此之前,我们先看一个图片:
这个图是Spring 使用动态代理创建的接口实例,可以看出,其使用的是 SimpleJpaRepository 类,所以如果我们实现自己的 Repository ,可以扩展 SimpleJpaRepository 并 实现自己的 factory-class 入手,这里不做详解。注意凡事实现 Repository 接口的实现类都不需要添加 @Repository 注解,否则你会遇到问题。
本文介绍JPA 相比上一篇关于JDBC 的介绍增加的文件工程截图为:
熟悉其中一种持久数据的方法后,其他类似的都大同小异。
- Spring Boot JPA 连接数据库
- Spring Boot JPA 连接数据库
- Spring Boot JPA 连接数据库
- Spring Boot JPA 连接数据库
- Spring Boot JPA 连接数据库
- Spring Boot JPA 连接数据库
- spring-boot-data-jpa 连接数据库
- 基于Spring boot的Spring data jpa连接MySQL数据库
- spring boot jpa 连接mycat
- Spring Boot 添加MySQL数据库及JPA
- Spring Boot 之jpa(二)数据库
- Spring Boot JDBC 连接数据库
- Spring Boot MyBatis 连接数据库
- spring boot mybatis连接数据库
- Spring Boot JDBC 连接数据库
- Spring Boot MyBatis 连接数据库
- Spring Boot JDBC 连接数据库
- Spring Boot MyBatis 连接数据库
- python unicode转str
- singleCall单来源调用解析及实现
- Manifest merger failed :
- html的localstorage的存储应用
- Access denied for user 'root'@'localhost' (using password:YES)解决方法
- Spring Boot JPA 连接数据库
- php define与const的区别
- 常见数据结构应用场景
- NIo、Bio、aio、 的原理及区别与应用场景
- 代理属性为何要用 weak 修饰?
- mysql jdbc 中文乱码解决方案
- ARM----- 移位操作(LSL、ASL、LSR、ASR、ROR、RRX)
- mysql5.5.47官方版本 同步数据到 percona 5.6.36-82-0的问题总结
- 获取本月的第一天和最后一天