본문 바로가기

개발일지

개발일지 21 - JPA

JPA란?

JPA( Java Persistence API)는 자바 ORM(Object-Relational Mapping) 대한 표준 명세(인터페이스 모음)이며 객체와 데이터베이스 간의 매핑을 관리하고, 쿼리문의 작성 없이 데이터베이스 작업을 수행할 수 있게 해 준다.

이를 통해 CRUD 작업을 더욱 쉽게 할 수 있도록 지원해 주고, 코드의 변경이나 유지보수도 용이해진다.

 

JPA 연결

spring.datasource.url: jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username: root
spring.datasource.password: password

spring.jpa.database: mysql // 데이터베이스
spring.jpa.database-platform: org.hibernate.dialect.MySQL5InnoDBDialect // 구현체
spring.jpa.generate-ddl: true // 스프링 실행시 entity로 구성된 테이블 생성
spring.jpa.show-sql: true //JPA가 생성한 쿼리문 보기
spring.jpa.hibernate.ddl-auto: update // 변경된 스키마 적용

 

데이터베이스마다 약간의 코드의 변경이 필요하다.

 

  • Entity 클래스
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column
    private String name;

 

 

  • Repository interface
public interface UserRepository extends JpaRepository<User, Long> {
    // 아무것도 없어 보이지만 기본 CRUD 메소드가 자동으로 제공
}

 

subject 키워드

메서드명 앞부분의 키워드로 어떤 작업을 수행할지 결정된다.

1. 생성

save(s entity) : 주어진 entity가 새로운 데이터일 경우 생성되고, 이미 존재할 경우 업데이트된다. 

2. 조회

findBy : 조회하는 대상이 1개 데이터라면 단일 객체로 리턴

findAllBy : List <User>와 같이 Collection 타입으로 리턴

3. 삭제

deleteBy : void 타입 혹은 int/long 등으로 삭제된 데이터 수 리턴

4. 카운트, 존재여부확인

existBy : boolean 타입으로 리턴

countBy : int/long 등으로 해당되는 데이터 수 리턴

 

공식 문서를 통해 더 자세히 알아보기