>  기사  >  Java  >  SpringBoot에서 데이터 지속성 프레임워크로 JPA를 사용하는 방법

SpringBoot에서 데이터 지속성 프레임워크로 JPA를 사용하는 방법

WBOY
WBOY앞으로
2023-05-17 18:13:40910검색

JPA는 Java Persistence API의 약어입니다. 중국어 이름은 Java Persistence Layer API입니다. 이는 JDK 5.0 주석 또는 XML 설명 개체와 관계형 테이블 간의 매핑 관계이며 런타임 시 엔터티 개체를 데이터베이스에 유지합니다.

1. 종속성 소개

<!-- spring mvc -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

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

<!-- lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

<!-- jpa持久层 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2. 데이터베이스 연결 구성

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/jpa-demo?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=UTF-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
  jpa:
    hibernate:
      # 自动创建表
      ddl-auto: update

ddl-auto 총 5개의 선택적 값이 있습니다

  • none: 아무것도 하지 않음

  • create: 최대 절전 모드가 로드될 때마다 삭제 사용 지난번에 생성된 테이블을 삭제한 다음 모델 클래스를 기반으로 새 테이블을 다시 생성해야 합니다. 두 번 변경되지 않더라도 이 작업을 수행해야 합니다. 이는 데이터베이스 테이블 데이터가 손실되는 중요한 이유입니다.

  • create-drop: hibernate가 로드될 때마다 모델 클래스를 기반으로 테이블이 생성되지만, sessionFactory가 닫히자마자 테이블은 자동으로 삭제됩니다.

  • update: 가장 일반적으로 사용되는 속성입니다. Hibernate가 처음 로드될 때 테이블 구조는 모델 클래스를 기반으로 자동으로 설정됩니다(데이터베이스가 먼저 설정되는 경우). 테이블 구조는 모델 클래스에 따라 자동으로 업데이트됩니다. 테이블 구조가 변경되었으나 이전 행을 삭제하지 않은 채 테이블의 행이 여전히 존재합니다. 서버에 배포되면 테이블 구조가 즉시 설정되지 않고 애플리케이션이 처음 실행될 때까지 기다립니다.

  • validate: hibernate가 로드될 때마다 데이터베이스 테이블 구조가 확인되고 생성됩니다. 새 테이블은 생성되지 않지만 새 값이 삽입됩니다.

3. 데이터 객체(DO)

import lombok.Data;

import javax.persistence.*;

@Table(name = "sys_user")
@Entity
@Data
public class SysUserDO {

    /**
     * 主键-自增
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(columnDefinition = "varchar(12) comment &#39;用户名称&#39;")
    private String name;

    @Column(columnDefinition = "varchar(50) comment &#39;邮箱&#39;")
    private String email;
}
  • @Id, 이 속성이 기본 키 자동 증가 방법을 사용하여 기본 키 필드

  • @GeneratedValue(strategy = GenerationType.IDENTITY)임을 나타냅니다.

  • @ 열은 데이터베이스 필드의 속성을 지정합니다. 데이터 유형, 길이, 설명 및 기타 정보를 설정할 수도 있고 JPA가 자동으로 인식할 수도 있습니다. @Repository, 이는 데이터 액세스 레이어

  • 5. 비즈니스 레이어
import com.biz.jpa.entity.SysUserDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface SysUserRepository extends JpaRepository<SysUserDO, Long> {
}

기본 키가 자동으로 증가되므로 기본 키를 설정할 필요가 없습니다. 삽입이 성공하면 자동 증가된 기본 키가 자동으로 객체에 다시 기록됩니다

6. Test

import com.biz.jpa.dao.SysUserRepository;
import com.biz.jpa.entity.SysUserDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class SysUserService {

    @Autowired
    private SysUserRepository sysUserRepository;

    public SysUserDO saveUser() {
        SysUserDO sysUser = new SysUserDO();
        sysUser.setName("Asurplus");
        sysUser.setEmail("123456@qq.com");
        sysUserRepository.save(sysUser);
        return sysUser;
    }
}

방문:

반환:

import com.biz.jpa.entity.SysUserDO;
import com.biz.jpa.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SysUserController {

    @Autowired
    private SysUserService sysUserService;

    @GetMapping("save")
    public SysUserDO save() {
        return sysUserService.saveUser();
    }
}

삽입이 성공했고 자동 증가된 기본 키가 여기에서 Jpa 통합이 완료되었습니다. 실제 프로젝트 개발에서 Jpa의 더 많은 사용법을 살펴봐야 합니다.

위 내용은 SpringBoot에서 데이터 지속성 프레임워크로 JPA를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제