[java, #7] JPA를 활용한 업데이트(update)와 삭제(delete)

0. 목적

데이터를 입력하고, 조회해보는 과정까지 수행했다.

이번에는 기존에 존재하는 데이터를 변경(업데이트)하고, 삭제하는 방법을 알아보자.

1. 업데이트

1.1 목적 및 결과

  • 목적: DB에 있는 기존 데이터를 새로운 데이터로 대체하기
  • 결과: service 패키지 생성, AircraftService 클래스 생성 및 업데이트 방법 정의

1.2 service 패키지 생성

1.2.1 service 패키지 생성

  • 목적: service 영역 생성
  • 패키지명: service
  • 생성 위치: src > main > java > com.sparata.week02 > service

1.3 service 스크립트 생성

1.3.1 목적 및 생성 위치

  • 목적: 업데이트 방법 정의 및 규칙 생성
  • 스크립트명: AircraftService
  • 생성 위치: src > main > java > com.sparata.week02 > service > AircraftService

1.3.2 코드

1.3.2.1 규칙 생성

// 목적: 업데이트 규칙 생성

@service
public class AircraftService {

  // 1. Service 클래스 내에 JPA 포함시키기
  // 1.1 JPA 클래스 불러오기
  public final AircraftRepository aircraftRepository{
  } 
  // 해석
  // -final: 반드시
  // -AircraftRepository: AircraftRepository 클래스를 불러와서 
  // -aircraftRepository: aircraftRepository를 실행해라
  // (기본 생성자는 코드가 없더라도 자동 생성됨)
  
  // 1.2 JPA 포함시키기
  public aircraftService(AircraftRepository aircraftRepository) {
    this.aircraftRepository = aircraftRepository;
  }
  // 해석
  //  public aircraftService(AircraftRepository aircraftRepository): AircraftRepository 스크립트에서 aircraftRepository를 불러와 aircraftService 인자로 받는다.
  // this.aircraftRepository = aircraftRepository; : 인자로 들어온 aircraftRepository를 class에 정보에 포함시킨다.
  
  
 
  // 2. 업데이트 규칙 생성
  public String update(Long id, Aircraft aircraft){
  
    Aircraft update_aircraft = aircraftRepository.findById(1L).orElseThrow(
    () -> IllegalArgumentException("해당 데이터가 없습니다.")
    );
    update_aircraft.update(aircraft)
    return update_aircraft.getModel()
  
  // 해석
  // public String update(Long id, Aircraft aircraft): Long 형식으로 id, Aircraft에서 aircraft를 불러와서 인자로 받는 update 메소드를 선언하며, 그 결과는 존해면 String 형식이다.
  // Aircraft update_aircraft = aircraftRepository.findById(1L).orElseThrow(
  // () -> IllegalArgumentException("해당 데이터가 없습니다.")
  // ); : Aircraft를 불러와 기본생성자 update_aircraft 변수를 선언하고, 해당 변수에 aircraftRepository(JPA)를 사용하여 첫 번째 ID를 찾는다. 만약 첫 번째 데이터가 존재하지 않으면, "해당 데이터가 없다는" 표기를 띄운다. 
 // update_aircraft.update(aircraft) : 데이터를 업데이트 한다.
 // return update_aircraft.getModel(): 모델명을 반환한다.
  }

}

1.3.2.2 실행하기

// @ src > main > java > week02application

 public static void main(String[] args) {
        SpringApplication.run(Week02Application.class, args);
    }

    @Bean
    public CommandLineRunner demo(AircraftRepository repository, AircraftService aircraftService) {
        return (args) -> {

            // 4. update
           Aircraft aircraft = new Aircraft("B777", "Boeing");
           aircraftService.update(1L, aircraft);
           
 // 해석
 //  Aircraft aircraft = new Aircraft("B777", "Boeing");: Aircraft 스크립트를 불러와 aircraft 생성자를 사용하여 Aircraft 클래스에 B777과 Boeing 정보를 할당한다.
 // aircraftService.update(1L, aircraft); : 업데이트를 수행한다. DB 첫 번째 데이터와 aircraft를 입력하여 aircraftService 생성자의 업데이트 메소드를 사용한다. DB에 데이터가 입력되었다.

            }

        };
    }
}

2. 삭제

2.1 목적

DB에 존재하는 데이터 삭제

2.2 코드

// @ src > main > java > week02application

public static void main(String[] args) {
SpringApplication.run(Week02Application.class, args);
}

@Bean
public CommandLineRunner demo(AircraftRepository repository, AircraftService aircraftService) {
    return (args) -> {

         // 5. 삭제하기
        repository.deleteAll();

    };
}

}

좋은 웹페이지 즐겨찾기