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);
}
}
참고자료
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 |