[Spring] Spring Data JPA 2

HOJUN·2024년 6월 11일

Backend - Spring

목록 보기
19/34

Database 파트에서 작성했던 Memory 기반 Database 코드를 JPA 코드로 옮겨보자

Spring Data JPA와 mysql connector dependency를 주입해줘야 한다.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.mysql:mysql-connector-j'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

yaml 파일도 작성해서 데이터베이스와 연동해야한다.

기존 코드에서 레포지터리 관련 클래스는 SimpleDataRepository라는 추상 클래스를 상속한 클래스로 만들었지만,
JPA를 사용하므로 JpaRepository 인터페이스를 상속하는 인터페이스로 변경해준다.

public interface UserRepository extends JpaRepository<UserEntity, Long> {}

Entity 또한 Primary Key를 등록해줘야한다.

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity(name = "user")
public class UserEntity{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private int score;
}

동시에 user테이블과 연결해서 데이터베이스와 데이터의 entity를 맞춰준다.
관련해서 book 테이블도 만들어 연결해준다.

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity(name = "book")
public class BookEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    private String category;
    
    private BigDecimal amount;
}

BookRepository 또한 JpaRepository를 상속하는 인터페이스로 만들어준다.

public interface BookRepository extends JpaRepository<BookEntity, Long> {}

앞서 살펴봤듯이 SimpleDataRepository에 구현한 내용이 이미 JpaRepository에 선언됐기 때문에 Controller 에서 호출한 메소드는 자동으로 JpaRepository를 상속받게 된다.

데이터 추가와 조회 기능을 모두 JPA로 옮겼고,
다른 메소드에서 몇가지 오류가 있으므로 다음 작성글에서 수정하도록 한다.

0개의 댓글