下面就来详细讲解SpringBoot整合JPA数据源方法及配置解析。
一、什么是JPA
JPA(Java Persistence API)是Java持久化规范,是EJB 3.0规范的一部分,旨在为Java开发人员提供一个数据库无关的对象/关系映射标准,以便管理Java应用程序中的持久化数据。在JPA中,我们通过实体类来操作数据库,不再需要手写增删改查的SQL语句。
二、SpringBoot集成JPA的步骤
1.在pom.xml文件中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2.配置数据源
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: root
其中,driver-class-name是指定数据库驱动,url是指定数据库连接地址,username和password是指定登录数据库的用户名和密码。
3.创建实体类
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String author;
@Temporal(value = TemporalType.TIMESTAMP)
private Date createTime;
@Temporal(value = TemporalType.TIMESTAMP)
private Date updateTime;
// 省略getter和setter方法
}
在实体类上通过@Entity注解表示这是一个实体类,@Id表示这是主键,@GeneratedValue指定主键生成策略,其余字段与数据库表中的字段一一对应。
4.创建仓库类
@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
}
通过继承JpaRepository接口,就可以直接使用JPA提供的方法进行增删改查操作,不需要手写SQL语句。
5.在Service中调用仓库方法
@Service
public class BookService {
@Autowired
private BookRepository bookRepository;
public List<Book> getAllBooks() {
return bookRepository.findAll();
}
public Book getBookById(Long id) {
return bookRepository.findById(id).orElse(null);
}
public Book saveBook(Book book) {
return bookRepository.save(book);
}
public void deleteBook(Long id) {
bookRepository.deleteById(id);
}
}
在Service类中注入BookRepository,调用JPA提供的方法进行数据库操作。
6.测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class BookServiceTest {
@Autowired
private BookService bookService;
@Test
public void testGetAllBooks() {
List<Book> books = bookService.getAllBooks();
System.out.println(books);
}
@Test
public void testGetBookById() {
Book book = bookService.getBookById(1L);
System.out.println(book);
}
@Test
public void testSaveBook() {
Book book = new Book();
book.setName("Java");
book.setAuthor("James Gosling");
book.setCreateTime(new Date());
book.setUpdateTime(new Date());
Book savedBook = bookService.saveBook(book);
System.out.println(savedBook);
}
@Test
public void testDeleteBook() {
bookService.deleteBook(1L);
}
}
通过调用BookService中的方法进行测试,可以看到数据成功地从数据库中读取出来,新增成功,删除也成功。
三、配置解析
在上述步骤中,我们配置了数据源,这里对配置参数进行解析。
1.datasource.driver-class-name
该参数指定了使用的数据库驱动,在实际项目中根据不同的数据库进行相应的配置。
2.datasource.url
该参数指定了数据库连接地址,其中的test可以替换为实际的数据库名。useUnicode=true表示使用Unicode字符集,characterEncoding=utf8表示使用UTF-8编码,useSSL=false表示不使用SSL连接,serverTimezone指定了时区为东八区。
3.datasource.username和datasource.password
该参数分别指定了登录数据库的用户名和密码。
四、示例
下面给出两个示例,分别演示了SpringBoot集成MySQL、集成MongoDB。
1.集成MySQL
在pom.xml文件中添加MySQL依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
配置数据源:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: root
引入JPA依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
创建实体类和仓库类,和上述示例相同。
2.集成MongoDB
在pom.xml文件中添加MongoDB依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
配置数据源:
spring:
data:
mongodb:
uri: mongodb://localhost:27017/test
创建实体类:
@Document(collection = "books")
public class Book {
@Id
private String id;
private String name;
private String author;
private Date createTime;
private Date updateTime;
// 省略getter和setter方法
}
创建Repository类:
@Repository
public interface BookRepository extends MongoRepository<Book, String> {
}
测试代码和上述示例相似。
以上就是SpringBoot集成JPA数据源方法及配置解析的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合JPA数据源方法及配置解析 - Python技术站