CRUD

이번에는 DB와 연동 테스트를 진행해보겠습니다

Controller - Service - Repository 로 구성되는 3 Tier 구조로 작성할예정입니다

 

application.properties

h2 memory 기반 db를 사용하겠습니다

추가로 h2 console을 활성화 하겠습니다

server.port=80
spring.application.name=tutorial
springdoc.swagger-ui.path=/
# h2-console
spring.h2.console.enabled=true
spring.h2.console.path=/h2
# h2-database
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test
spring.datasource.username=sa
spring.datasource.password=

 

entity.Sensor.java

예제를 어떤 주제로 만들까 생각하다가 간단한 홈 네트워크 구조를 만들려고 합니다.(변경될 수 있습니다)

먼저 튜토리얼 끝내놓고 다시 생각해보겠습니다

일단 그래서 근간이 되는 센서 테이블을 작성합니다

@Entity
@Getter
@Setter
@Table(name = "sensors")
public class Sensor {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String code;
    private String name;
    private String type; // 온도, 습도, 전력, 움직임 등
}

 

 

repository.SensorRepository.java

public interface SensorRepository extends JpaRepository<Sensor, Long> {
}

 

service.SensorService.java

이번 글에서는 편의상 Entity Class를 매개변수로 넣지만 이렇게 쓰지 말아주세요

@Service
@Transactional
@RequiredArgsConstructor
public class SensorService {
    private final SensorRepository sensorRepository;

    public List<Sensor> select() {
        return sensorRepository.findAll();
    }

    public Sensor create(Sensor param) {
        return sensorRepository.save(param);
    }

    public Sensor update(Sensor param) {
        return sensorRepository.save(param);
    }

    public boolean delete(Long param) {
        sensorRepository.deleteById(param);
        return true;
    }
}

 

controller.SensorController.java

@RestController
@RequestMapping("api/sensor")
@RequiredArgsConstructor
public class SensorController {
    private final SensorService sensorService;

    @GetMapping
    public List<Sensor> select() {
        return sensorService.select();
    }

    @PostMapping
    public Sensor create(@RequestBody Sensor param) {
        return sensorService.create(param);
    }

    @PutMapping
    public Sensor update(@RequestBody Sensor param) {
        return sensorService.update(param);
    }

    @DeleteMapping("{id}")
    public boolean delete(@PathVariable("id") Long param) {
        return sensorService.delete(param);
    }
}

 

이제 localhost로 접속해서 POST 요청을 날려 데이터를 생성해보거나

PUT 요청을 날려 데이터를 수정해보세요

 

http://localhost/h2/login.jsp 로 접속해서

 

 

위 화면이 나오는데 위 처럼 입력하고 connect를 누르면 다음과 같은 화면이 나옵니다

 

여기서 좌측 상단에 보이는 SENSORS를 클릭하고
Run 또는 Ctrl + Enter 키를 누르면 POST 요청으로 전송했던 데이터를 확인할 수 있습니다.

 

 

몇줄 작성하지도 않았는데 CRUD가 완성됐습니다.

 

코드는 다음 github 주소에서 확인할 수 있습니다

 

ahnjehoon/spring-boot3-tutorial (github.com)

+ Recent posts