안녕하세요
로로봉입니다 : )
이번에는 JDBC를 사용하여 MySQL을 연동해보도록 하겠습니다.
처음 구성에서는 Mybatis 를 사용하려고 했는데, JDBC가 여러모로 장점이 많기에 Mybatis를 구성에서 제거하고 JDBC를 사용해보도록 하겠습니다.
Spring JDBC는 MyBatis와 비교해서 아래와 같이 학습 비용은 낮고 생산성은 높은 장점이 있습니다.
- 초기 설정이 단순합니다.
- 쿼리 결과를 변환하는 구성요소(RowMapper)가 인터페이스로 정의되어 Java 컴파일러의 장점을 활용할 수 있습니다.
- SQL 쿼리를 Groovy 파일 안에 선언하면 Java 컴파일러의 장점을 활용할 수 있습니다.
- 간단한 ORMapping 기능을 제공합니다.
- Collection 파라미터를 더 편하게 사용할 수 있습니다.
- MyBatis의 일부 기능들은 단순히 쿼리를 실행하기만을 원하는 사람에게는 불필요하고 디버깅을 어렵게 합니다.
- 세션관리, batch update 추상화 등
JDBC로 실제 연동을 해보도록 하겠습니다.
1) JDBC Dependency 추가
기존에 mybatis dependency를 제거합니다.
제거 후 jdbc에 대한 dependency를 추가해줍니다.
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
아래 순서에 맞게 배치해야 오류 없이 gradle이 Refresh 됩니다.
아래와 같이 gradle을 Refresh해 줍니다.
2) MySQL DB 데이터 구성
MySQL DB는 테스트로 아래와 같이 구성하였습니다.
DB명은 testdb, 테이블명은 people_tbl, 테이블의 각 필드는 키, 이름, 나이, 직업으로 정의하였습니다.
테이블을 만든 뒤 해당 테이블에 아래와 같이 데이터를 저장해 두었습니다.
해당 테이블의 모델을 만들어 줍니다.
model 패키지에서 우측 마우스를 클릭하여 New - Class를 선택해줍니다.
클래스명을 People로 입력 후 Finish 버튼으로 클래스를 만들어 줍니다.
아래와 같이 People 클래스를 작성해줍니다.
클래스 어노테이션은 @Getter, @Setter, @ToString을 추가해줍니다.
3) Groovy 설치
이제 쿼리 관리를 위해 Goorvy를 사용해보겠습니다.
REST API를 구현하다보면 SQL 쿼리가 간단한 것들도 있지만 복잡해지기도 합니다.
그렇기 때문에 Goorvy를 사용해 SQL 쿼리를 정리해놓고 호출하여 사용하도록 합니다.
Goorvy를 사용하기 위해 build.gradle의 plugins와 dependencies에 아래와 같이 추가해줍니다.
이클립스에서 groovy script 를 작성하기 위해서 아래 사이트에서 groovy 지원 버전을 확인해 줍니다.
사이트에 접속해보면 이클립스 버전에 맞는 Groovy URL을 확인할 수 있습니다. 이클립스에 맞는 URL을 복사해 둡니다.
이클립스에서 Help - Install New Software를 선택해 줍니다.
Add 버튼을 누르고 Name에는 groovy를 입력해줍니다. 위에서 복사한 URL을 Location에 넣어주시면 됩니다.
Add 버튼으로 추가해줍니다.
체크 박스가 모두 체크된 것을 확인 후 Next 버튼을 눌러줍니다.
Next를 눌러줍니다.
라이센스를 동의해주고 Finish 버튼으로 설치를 진행합니다.
설치가 완료되면 이클립스를 재시작하라는 확인창이 나오며 Restart Now를 눌러 재시작 해줍니다.
프로젝트에 Groovy가 적용 되도록 아래와 같이 Gradle Refresh를 해줍니다.
4) SQL 관리 - Groovy 파일 생성
info 패키지 아래 reposiroty 패키지를 만들어 줍니다.
패키지 이름에 repository를 넣어주고 Finish 버튼으로 생성해 줍니다.
생성된 패키지에 Groovy 파일을 추가해줍니다.
Groovy 폴더에 Groovy Type을 선택 후 Next를 눌러줍니다.
파일명은 PeopleSql로 입력 후 Finish 버튼을 눌러 파일을 만들어 줍니다.
아래와 같이 SQL문을 입력 후 저장해줍니다.
5) RowMapper 생성
RowMapper를 공통적으로 사용할 것이므로 MapperClass로 생성해줍니다.
repository 패키지를 선택 후 New - Class를 선택해줍니다.
클래스 명을 PeopleRowMapper 를 입력 후 Finish 버튼으로 클래스를 만들어줍니다.
아래와 같이 PeopleRowMapper 클래스를 작성해줍니다.
6) Reposiroty.java 생성
repository 패키지에서 우측 마우스를 눌러 New - Class 를 선택해줍니다.
클래스명에 PeopleRepository를 입력 후 Finish 버튼을 눌러줍니다.
PeopleRepository 클래스를 아래와 같이 작성해줍니다.
7) Service 에서 Repository 사용
이제 Service 에서 Repository 를 이용해 데이터를 조회해 보겠습니다.
InfoService 클래스를 아래와 같이 수정해보겠습니다.
위에서 만들어 놓은 PeopleRepository 객체를 선언하고, 생성자를 통해 초기화 해줍니다.
getPeopleList()를 사용하여 해당 Repository의 함수를 호출한 결과를 Return하도록 하였습니다.
마지막으로 새로운 Controller를 추가해 Service를 호출해보겠습니다.
info 패키지에 우측 마우스를 눌러 New - Class를 눌러줍니다.
클래스명에 InfoController4 입력 후 Finish 버튼을 눌러 클래스를 만들어줍니다.
생성된 InfoController4는 아래와 같이 작성해줍니다.
@Slf4j
@RestController
public class InfoController4 {
private InfoService infoService;
@Autowired // spring 4.3 버전 이상부터는 생략 가능
public InfoController4(InfoService infoService) {
this.infoService = infoService;
}
@GetMapping("/peopleList")
public Object peopleList() {
log.debug("/peopleList start");
List<People> peopleList = infoService.getPeopleList();
return peopleList;
}
}
빌드 후 peopleList를 호출하면 SQL이 호출된 결과를 확인 할 수 있습니다.
기본 Select 만 호출해 보았는데, 다음에는 조건이 있는 Select문이나 Insert, Update, Delete 문도 알아보도록 하겠습니다.
공감 ♥ + 구독 부탁드립니다 : )
'개발 정보 > 웹개발' 카테고리의 다른 글
[웹 개발] Eclipse REST API 구현 - INSERT 문 처리 (5) | 2022.05.31 |
---|---|
[웹 개발] Eclipse REST API 구현 - SELECT문 조건 조회 (0) | 2022.05.30 |
[웹 개발] Eclipse REST API 구현 - Service 생성 (4) | 2022.05.26 |
[웹 개발] Eclipse REST API 구현 - Log 기록 남기기 (7) | 2022.05.24 |
[웹 개발] Eclipse REST API 구현 - JSON 형식 리턴하기 (4) | 2022.05.23 |
댓글