English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot Data JPA

Spring Data는 고급 Spring Source 프로젝트입니다. 그 목적은 다양한 유형의 영구 저장소 저장소를 통합하고, 관계형 데이터베이스 시스템과 NoSQL 데이터 저장소와 같은 다른 유형의 영구 저장소에 대한 쉬운 접근을 제공하는 것입니다.

신규 애플리케이션을 구현할 때, 우리는 비즈니스 로직에 집중해야 하며 기술 복잡성과 샘플 코드에 대해 고려해야 합니다. 이것이 Java Persistence API(JPA) 규격과 Spring Data JPA가 매우 인기가 많은 이유입니다.

Spring Data JPA는 JPA의 위에 한 층을 추가했습니다. 이는 Spring Data JPA가 JPA 규격으로 정의된 모든 기능을 사용한다는 것을 의미하며, 특히 엔티티, 연관 맵핑 및 JPA의 쿼리 기능입니다. Spring Data JPA는 코드 없이 저장소 패턴을 구현하고 메서드 이름으로 데이터베이스 쿼리를 생성하는 등 자신만의 기능을 추가했습니다.

Spring Data JPA

Spring Data JPA는 대부분의 JDBC 기반 데이터베이스 액세스와 ORM(객체 관계 맵핑)의 복잡성을 처리합니다. 그것은 JPA가 필요로 하는 스텝 코드를 줄입니다.

Spring Data JPA는 데이터 액세스 레이어의 구현을 개선하기 위해 작업량을 줄이기 위해 목표를 설정합니다.

Spring Data JPA 기능

Spring Data JPA는 세 가지주요 기능, 예를 들어:

코드 없는 스토리지: 이는 가장 인기 있는 영속성 모델 중 하나입니다. 이를 통해 더 높은 추상 수준에서 비즈니스 코드를 구현할 수 있습니다. 간단한 스텝 코드: 그것은 저장소 인터페이스를 통해 각 메서드에 기본 구현을 제공합니다. 이는 더 이상 읽기와 쓰기 작업을 구현할 필요가 없다는 것을 의미합니다. 생성된 쿼리: Spring Data JPA의 또 다른 기능은 메서드 이름을 기반으로데이터베이스 쿼리 생성。쿼리가 너무 복잡하지 않으면, 스토리지 인터페이스에 이름을 시작하는 쿼리를 정의해야 합니다. findBy 시작하는 이름의 메서드를 정의합니다. 메서드를 정의한 후, Spring은 메서드 이름을 해석하고 그에 따라 쿼리를 생성합니다. 예를 들어:

public interface EmployeeRepository extends CrudRepository<Employee, Long> 
{
Employee findByName(String name);
}

위의 예제에서, 우리는 두 개의 제너릭을 사용하여 확장했습니다. 를 추가합니다 : Employee Long 。Employee는 관리해야 하는 엔티티그리고 Long 이는 주키 데이터 타입입니다

Spring 내부에서 생성 JPQL (Java Persistence Query Language) 메서드 이름 기반의 쿼리. 이 쿼리는 메서드 서명에서 파생됩니다. 바인딩 파라미터 값을 설정하고 쿼리를 실행하여 결과를 반환합니다.

다른 몇 가지 기능도 있습니다. 예를 들어:

그것은 커스터마이즈드 스토리지 레포지토리 코드를 통합할 수 있습니다. 이것은 강력한 스토리지 레포지토리와 커스터마이즈드 오브젝트 맵핑 추상화입니다. 그것은 투명 검토를 지원합니다. 그것은 기본 속성을 제공하는 도메인 기반 클래스를 구현합니다. 그것은 여러 모듈을 지원합니다. 예를 들어, Spring Data JPA, Spring Data MongoDB, Spring Data REST, Spring Data Cassandra 등.

Spring 데이터 스토리지 레포지토리

Spring Data JPA는 제공합니다 세 가지스토리지 레포지토리, 예를 들어:

CrudRepository: : 그것은 표준생성, 읽기, 업데이트삭제。그것은 다음과 같은 것들을 포함하고 있습니다: findOne(),findAll( ),save(),delete(),와 같은 것들. PagingAndSortingRepository : 그것은 확장합니다. 를 추가합니다 CrudRepository하여 findAll 메서드를 추가합니다. 이를 통해 페이징 방식으로정렬데이터를检索 JpaRepository : 이는 JPA 특정 저장소에서 Spring Data Jpa 에서 정의됩니다. 그것은 CrudRepository와 PagingAndSortingRepository를 확장합니다. JPA 특정 메서드를 추가합니다. 예를 들어 flush()에서 persistence context에 refresh를 유발합니다.

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

SpringBoot Starter Data JPA

Spring Boot는 제공합니다 spring-boot-starter-data-jpa 의존성을 사용하여 Spring 애플리케이션을 관계형 데이터베이스와 효율적으로 연결합니다. spring-boot-starter-data-jpa는 내부에서 spring 의존성을 사용합니다-boot-jpa 의존성(스프링 부트 버전1.5.3부터)。

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

데이터베이스는 테이블로 사용됩니다/관계 설계된 데이터베이스는 테이블로 사용됩니다. 이전 방법(JDBC)은 SQL 쿼리를 작성하는 것을 포함합니다. JPA에서는 객체에 있는 데이터를 테이블에 저장하고, 반대로 테이블의 데이터를 객체에 저장합니다. 그러나 JPA는 다른 사고 과정으로 발전했습니다.

JPA 이전에는 ORM이 이러한 프레임워크를 가리키는 용어로 더 자주 사용되었습니다. 이 때문에 Hibernate이 ORM 프레임워크라고 불리게 되었습니다.

JPA는 우리가 애플리케이션 클래스를 데이터베이스 테이블에 매핑할 수 있게 합니다.

엔티티 관리자: : 매핑을 정의한 후, 데이터베이스와의 모든 상호작용을 처리합니다. JPQL(Java Persistence Query Language): 엔티티에 대한 검색을 위한 쿼리를 작성하는 방법을 제공합니다. SQL 쿼리와 다릅니다. JPQL 쿼리는 엔티티 간에 정의된 매핑을 이해합니다. 필요에 따라 추가 조건을 추가할 수 있습니다. 표준 API : Java 기반 API를 정의하여 데이터베이스에서 검색을 수행합니다.

Hibernate과 JPA

Hibernate은 JPA의 구현입니다. ORM 프레임워크 중 가장 인기가 많으며, JPA는 규범을 정의하는 API입니다. Hibernate은 객체와 테이블 간에 추가한 매핑을 이해합니다. 매핑에 근거한 데이터베이스에서 데이터를 검색하는 것을 보장합니다/데이터 저장을 제공합니다. 또한 JPA 상단에 다른 기능도 제공합니다.

Spring Boot JPA 예제

이 예제에서는 spring을 사용할 것입니다-boot-starter-data- jpa 의존성을 사용하여 H2의 데이터베이스 연결.

단계1: https://spring initializr 열기//start.spring.io/。

단계2: 제공합니다. 그룹이름. 우리는 com.w3codebox

단계3: 제공합니다. 아티팩트 ID. 우리는 spring-boot-jpa-example.

단계4: 의존성 추가: Spring Web, Spring Data JPA, H2数据库。

단계5: 버튼을 클릭하여 연결을 테스트합니다. 연결이 성공하면 "테스트 성공" 메시지가 표시됩니다. 생성버튼. "생성" 버튼을 클릭하면, 프로젝트를 JAR 파일에서, 그리고 로컬 시스템에 다운로드하십시오.

단계6: JAR 파일을 선택하고 STS 작업 공간에 붙여넣으십시오.

단계7:프로젝트 폴더를 도입하여 STS로 가져오십시오.

파일-> 도입-> 기존 Maven 프로젝트-> 탐색-> 선택 폴더 spring-boot-jpa-example->完成

인 것을 도입하는 데는 시간이 걸립니다.

단계8: 이름이 com.w3codebox.controller 의 패키지를 단계 src/main/java 인 프로그램을 생성하십시오.

단계9: 컨솔에 이름이 ControllerDemo 의 Controller 클래스. 패키지 com.w3codebox.controller

ControllerDemo.java

package com.w3codebox.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ControllerDemo 
{
@RequestMapping("/")
public String home()
{
return "home.jsp";
}
}

단계10: 인 폴더 src/main/java에 이름이 com.w3codebox.model 의 패키지.  

단계11: 인 패키지 com.w3codebox.model에 이름이   User 의 클래스.

User. Java

package com.w3codebox.model;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="userdata")
public class User 
{
@Id
private int id;
private String username;
public int getId() 
{
return id;
}
public void setId(int id) 
{
this.id = id;
}
public String getUname() 
{
return username;
}
public void setUname(String username) 
{
this.username = username;
}
@Override
public String toString() 
{
return "User [id=" + id + ", uname=" + username + "]";
}
}
 

现在,我们需要配置H2数据库。

단계12: 打开   console 文件并配置以下内容:  端口,启用H2控制台,数据源,和   URL。

console

server.port=8085
spring.h2.console.enabled=true
spring.datasource.platform=h2
spring.datasource.url=jdbc:h2:mem:w3codebox
 

단계13: : 在文件夹   src/main/resources中创建一个 SQL 文件。

右键单击文件夹src/main/resources->新建->文件->提供  文件名->完成

我们提供了文件名   data.sql ,并将以下数据插入其中。

data.sql

insert into userdata values(101Tom');
insert into userdata values(102Andrew');
insert into userdata values(103Tony');
insert into userdata values(104Bob');
insert into userdata values(105Sam');
 

단계14: : 在   src 文件夹中创建一个名称为   webapp 的文件夹。

단계15: 使用我们在   ControllerDemo 中返回的名称创建一个JSP文件。在ControllerDemo.java中,我们返回了   home.jsp

home.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
!DOCTYPE html
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="addUser">
ID:<br />
<input type="text" name="t1><br />
사용자 이름:<br />
<input type="text" name="t2><br />
<input type="submit" value="Add">
</form>
</body>
</html>
 

단계16: 실행   SpringBootJpaExampleApplication.java 에서 실행되고 있는 것을 콘솔에서 확인할 수 있습니다.   8085 우리의 애플리케이션이 포트

단계17: file. //에서 성공적으로 실행됩니다. 8085/브라우저를 엽니다. URL http:2-localhost:/h   console 를 통해 확인할 수 있습니다.

application.properties   우리는 파일에서 설정된 JDBC URL과 기본 사용자 이름 sa를 클릭하여 테스트 연결

단계18: 버튼을 클릭하여 연결을 테스트합니다. 연결이 성공하면 "테스트 성공" 메시지가 표시됩니다.   Connect (연결) 버튼. 우리가   User.java 에서 정의한 userdata 테이블의 구조를 확인하세요.

단계19: 다음 쿼리를 실행하여 우리가 삽입한   data.sql 파일의 데이터.

SELECT * FROM USERDATA;