1. Spring Data JPA 이용하는 프로젝트 생성
위와 같이 Spring Initializer를 이용하여 스프링 부트 프로젝트 생성
실행시키면 오류 발생 => Spring Data JPA 라이브러리가 추가되었기 때문에 자동으로 이에 관련된 설정을 추가하였으나 구체적인 값이 지정되지 않아서 발생하는 문제
따라서 두가지 설정 필요
1. MariaDB를 위한 JDBC 드라이버 => maven mariadb 를 구글에 검색하면 찾을 수 잇음. Gradle 관련 설정 복사하여 build.gradle 파일의 dependencies 항목에 추가
2. 스프링 부트 프로젝트 내 MariaDB 설정 => application.properties 파일 설정
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/bootex
spring.datasource.username=bootuser
spring.datasource.password=bootuser
2. Entity 클래스와 JpaRepository
@Entity
엔티티 클래스는 반드시 @Entity 어노테이션 추가. 엔티티를 위한 클래스이며, 해당 클래스의 인스턴스들이 JPA로 관리되는 엔티티 객체라는 것을 의미. @Entity 붙은 클래스는 옵션에 따라서 자동으로 테이블 생성가능
@Table
데이터베이스상에서 엔티티 클래스를 어떠한 테이블로 생성할 것인지에 대한 정보를 담기위한 어노테이션. @Table(name="t_memo") 테이블 이름이 't_memo'로 생성
@Id와 @GeneratedValue
@Entity가 붙은 클래스는 특정필드를 @Id로 지정해야 함. @Id가 사용자가 입력하는 값을 사용하는 경우가 아니면 자동으로 생성되는 번호 사용하기 위해 @GeneratedValue 사용
@GeneratedValue(strategy = GenerationType.IDENTITY) 부분은 PK를 자동으로 생성하고자 할때 사용
@Column
추가적인 필드가 필요한 경우
JpaRepository 인터페이스
Spring Data JPA는 JPA 구현체인 Hibernate를 이용하기 위한 여러 API제공 => JpaRepository
JpaRepository를 사용할 때는 엔티티의 타입 정보와 @Id 타입 지정. Spring Data JPA는 인터페이스 선언만으로 자동으로 스프링의 빈으로 등록됨
3. 쿼리
쿼리 메소드
: 메소드의 이름 자체가 질의문
return 타입
-select 작업이면 List 타입이나 배열 이용가능
-파라미터에 Pageable 타입 넣는 경우 무조건 Page<E> 타입
deleteBy를 이용해 삭제할 경우 -> @Transactional과 @Commit 어노테이션 사용
@Query 어노테이션
-필요한 데이터만 선별적으로 추출하는 기능이 가능
-데이터베이스에 맞는 순수한 SQL 사용하는 기능
-select가 아닌 DML 등을 처리하는 기능
파라미터 바인딩
-'?1, ?2' 와 1부터 시작하는 파라미터의 순서를 이용하는 방식
-':xxx'와 같이 ':파라미터 이름'을 활용하는 방식
필요한 데이터를 Object[] 형태로 선별적으로 추출 가능