250x250
syk531
하루
syk531
전체 방문자
오늘
어제
  • 분류 전체보기 (166)
    • 개발 (166)
      • java (11)
      • kotlin (7)
      • spring, spring boot (35)
      • Javascript (4)
      • Tyhmeleaf (2)
      • Kafka (17)
      • Docker (8)
      • Kubernetes (3)
      • Elastic Stack (4)
      • react native (3)
      • Web (4)
      • GIS (3)
      • 리눅스 (16)
      • Windows (2)
      • 네트워크 (2)
      • 안드로이드앱 (5)
      • git (2)
      • Tool (15)
      • 프로젝트 (7)
      • 백준알고리즘 (14)
      • DB (2)

인기 글

최근 글

블로그 메뉴

    공지사항

    태그

    • 티스토리챌린지
    • 뉴스앱
    • 오블완

    최근 댓글

    티스토리

    hELLO · Designed By 정상우.
    syk531

    하루

    개발/spring, spring boot

    Spring Boot에서 JPA 사용하기

    2024. 2. 15. 13:33
    728x90
    반응형

    기존에 Mybatis를 사용해서 데이터베이스에 CRUD 작업을 하고 있는 부분을 JPA로 변경해보았습니다.

    JPA를 적용한 이유는 기존에 사용하던 간단한 SQL들을 JPA를 적용하면 SQL을 작성할 필요 없이 객체 지향적으로 전환할 수 있어서 적용해보았습니다.

     

    1. 의존성 추가

    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

     

    2. 엔티티 클래스 생성

    JPA 엔티티 클래스를 생성합니다.

    import jakarta.persistence.Column;
    import jakarta.persistence.Entity;
    import jakarta.persistence.Id;
    import lombok.Data;
    
    @Data
    @Entity(name = "device_info")
    public class DeviceInfo {
        @Id
        @Column(name = "device_no")
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private int deviceNo;
    
        @Column(name = "device_nm")
        private String deviceNm;
    
        @Column(name = "device_cd")
        private String deviceCd;
    
        @Column(name = "position_yn")
        private String positionYn;
    }

     

    3. 리포지토리 인터페이스 생성

    JPA 리포지토리 인터페이스를 생성합니다. Spring Data JPA에서는 JpaRepository 인터페이스를 상속받아 사용합니다.

    import org.springframework.data.jpa.repository.JpaRepository;
    
    public interface DeviceInfoRepository extends JpaRepository<DeviceInfo, Integer> {
        DeviceInfo findByDvcCdAndPositionYn(String dvcCd, String positionYn);
    }

     

    4. 서비스 및 컨트롤러 구현

    서비스 계층과 REST 컨트롤러를 구현하여 CRUD 연산을 수행합니다.

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    @RequiredArgsConstructor
    public class DeviceService {
        private final DeviceInfoRepository deviceInfoRepository
        
        
        // 모든 장비 조회
        public List<DeviceInfo> findAllDeviceInfos() {
            return deviceInfoRepository.findAll();
        }
        
        // 장비 조회
        public DeviceInfo findDeviceInfoById(int id) {
            return deviceInfoRepository.findById(id).orElse(null);
        }
        
        // 장비 조회(조건 여러개)
        public DeviceInfo findDeviceInfoById(String dvcCd) {
            return deviceInfoRepository.findByDvcCdAndPositionYn(dvcCd, "Y");
        }
        
        // 장비 저장
        public DeviceInfo saveDeviceInfo(DeviceInfo deviceInfo) {
            return deviceInfoRepository.save(deviceInfo);
        }
    
        // 장비 삭제
        public void deleteDeviceInfo(int id) {
            deviceInfoRepository.deleteById(id);
        }
    }

     

     

    참고자료

    https://goddaehee.tistory.com/209

    728x90
    반응형
    저작자표시 (새창열림)

    '개발 > spring, spring boot' 카테고리의 다른 글

    [Spring Data JPA] Entity가 복합키를 사용할때 JpaRepository 개발 방법  (0) 2024.02.16
    [Spring Data JPA] Cannot do an operation on a closed statement 오류 해결  (0) 2024.02.16
    [Spring Boot] 서버 시작 시 WebSocket 연결 client java 로직 구현  (1) 2024.02.08
    [Spring Boot] mariadb-java-client vs mysql-connector-j  (0) 2024.02.07
    [Spring Boot][Mybatis][MariaDB] Bulk Update 방법  (0) 2024.02.07
      '개발/spring, spring boot' 카테고리의 다른 글
      • [Spring Data JPA] Entity가 복합키를 사용할때 JpaRepository 개발 방법
      • [Spring Data JPA] Cannot do an operation on a closed statement 오류 해결
      • [Spring Boot] 서버 시작 시 WebSocket 연결 client java 로직 구현
      • [Spring Boot] mariadb-java-client vs mysql-connector-j
      syk531
      syk531
      기억을 위해 기록을.

      티스토리툴바