⚡JPA 사용 방법 (기본)
1. 의존성 추가
- maven repository 사이트에서 버전에 따라 추가가 가능하다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
2. Entity Class 생성
- Entity가 설정된 Class는 JPA가 관리하는 클래스이고, 테이블과 매핑할 테이블은 어노테이션을 붙여 사용한다.
# 여기에서 @Entity가 붙은 클래스는 JPA가 관리하는 클래스이고, 테이블과 매핑할 테이블은 해당 어노테이션을 붙인다.
만약 @ID의 컬럼이 자동 증가 하도록 테이블을 생성 했다면, @GeneratedValue 어노테이션을 사용해야한다.
@Data
@Entity
@NoArgsConstructor
@Table(name = "stm_info")
public class stm_info {
// @GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
@Column(name="SI_KEY")
private Long siKey;
@Column(name="GU_KEY")
private Long guKey;
@Column(name="OG_KEY")
private Long ogKey;
@Column(name="SI_NM")
private String siNm;
@Column(name="SI_IP")
private String siIp;
}
3. Repository 클래스 생성
- JPA 에서는 Repository 인터페이스를 생성하고, JpaRepository<Entity, 기본키 Type>을 상속 받으면, 기본적인 CRUD가 자동으로 생성이 된다.
JPA 처리를 담당하는 Repository의 경우 기본적으로 4가지가 있다.
1) Repository<T, ID>
2) CrudRepository<T, ID>
3) PagingAndSortingRepository<T, ID>
4) JpaRepository<T, ID>
제일 기본적인 Repository<T, ID> 를 사용해보자. (나머지는 한번 검색해보길 권장)
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface stmInfoRepository extends JpaRepository<stm_info, Long>, stmInfoRepositoryCustom {
// 비워져있어도 기본적인 CRUD 기능은 작동이 된다.
// 추가적으로 세부적인 작업을 하고 싶다면 지원되는 키워드를 한번 찾아보길 권장한다.
// EX) 검색
public List<stm_info> findBySiKey(Long siKey);
public List<stm_info> findBySiNmAndSiKey(String siNm, Long siKey);
}
위의 예시 말고도 여러가지의 키워드가 존재하며, 무엇을 하고싶은가에 따라서 확인이 필요하다.
4. GraphQLQuery를 이용한 호출.
- 밑의 내용은 테스트 소스이며, 각각의 상황에 맞게 Service를 생성해서 호출하는 방식을 사용해야한다.
@Component
@RequiredArgsConstructor
public class SystemQuery {
private final stmInfoRepository stmInfoRepository;
@GraphQLQuery(name = "getSystemInfo",description = "시스템key로 조회")
@Transactional(readOnly = true)
public List<stm_info> getTestSystemInfo(Long siKey) {
List<stm_info> stmInfo = stmInfoRepository.findBySiKey(siKey);
return stmInfo;
}
}
반응형
'Spring' 카테고리의 다른 글
[JPA] QueryDSL에서 서브 쿼리 사용 정리 (0) | 2023.01.29 |
---|---|
[Spring] SpringBoot + RabbitMQ 연동 내용 정리. (0) | 2022.10.21 |
Spring Boot SPQR 개념 및 사용 방법 정리 (0) | 2022.09.15 |
Spring Data JPA에 대한 개념 및 사용 방법 정리 (0) | 2022.06.02 |
Spring Boot AOP 내용 및 사용 방법 정리 (0) | 2022.05.20 |