본문 바로가기
클론코딩

LMS Web 클론코딩 8 (Spring Dependency, 난관해결방법)

by zho 2024. 1. 25.

2024.01.25

이번 프로젝트는 Spring Boot가 아닌 Spring으로 진행을 한다. Spring에서 좀 더 편리하게 Spring Boot가 나왔기 때문에 Spring을 제대로 다룰 줄만 안다면 Spring Boot는 어려움 없이 배울 수 있다고 생각해서이다. 물론 Spring의 경우 Boot와 다르게 dependeny버전 설정 등 번거로운 부분이 있지만 오히려 번거로운 과정 속에 배움이 있다고 생각하며 Spring으로 진행 중이다.

 

1. 첫 번째 난관 (JPA dependency가 추가가 안됨)

나는 바로 JPA를 이용하여 db에 접근하려고 했다. 당연히 jpa를 사용하려면 build.gradle(나는 gradle을 사용하기 때문에)에 jpa dependency를 추가해줘야 한다. 처음엔 이렇게 해줘야 하는지 몰라서 동작이 안되었다. 이후 dependency를 추가하기 위해 Spring JPA라는 키워드로 인터넷 검색을 했는데, 글이 100개라면 거의 99개가 Spring Boot에 관련된 내용이었다. 안 되겠다 싶어 직접 https://mvnrepository.com에서 현재 Spring 버전과 맞는 Spring JPA dependency를 추가해 줬다.(Spring은 각 dependency마다 호환되는 버전이 있기에 이 버전관리를 잘해줘야 한다. 이는 위 링크인 mvnrepository에서 확인 가능하다.)

 

이제 됐겠다 싶었지만 안된다. 이럴 때 살펴봐야 할 주요 파일들은 build.gradle, root-context.xml, servlet-context.xml, application.properties이다. 나는 root-context.xml에서 entityManagerFactory부분에서 잘못 입력된 부분이 있었다. (꼼꼼하게 살펴볼 것)

 

2. 두 번째 난관 (JDBC db연결)

처음에 JPA가 안되어서 JDBC template로 먼저 기능을 구현해 보고 테스트해봐야겠다고 생각했다. JDBC template를 이용해 간단한 입력과 조회 기능을 구현하고 db에 연결하는 과정에서 에러가 발생했다. 이럴 땐 application.properties에서 db url이나 datasource.driver-class-name이 잘 설정되어있는지 등을 잘 봐야 한다. 나는 db는 mysql을 사용했고, DBeaver을 이용해 관리해 줬다.

 

3. 세 번째 난관(DB데이터 읽어오기)

JDBC로 데이터 추가 테스트를 성공하고, 이 데이터를 가져와서 화면에 뿌리는 걸 구현했는데, 뭔가 잘 안된다. 분명 mapping도 잘하고 controller도 잘 확인했는데 db 데이터를 가져오는 작업을 하지 못한다. 

 

4. 네 번째 난관(JPA DB 추가 안됨)

JDBC template로는 db접근이 가능한 것을 확인해 보고 JPA로 바꿔서 시도했는데 db에 데이터를 추가하지 못하는 상황이 발생했다. 

 

난관해결방법

 

1. 에러 확인

당연히 프로젝트 개발을 하다 보면 예상치 못한 곳에서 에러가 발생하게 된다. 스트레스를 받을 수도 있겠지만 긍정적으로 생각하는 게 좋다. 에러가 발생하면 무조건 에러가 왜 발생했는지 에러로그가 뜨게 되는데 이 부분을 꼼꼼하게 살펴봐야 한다. 문제가 생기는 부분과 문제가 생기는 이유 또는 에러 이름이 나오기 때문에 어디가 문제인지 확인할 수 있다. 가끔은 에러가 발생하면 잘 안 읽고 바로 복사 붙여 넣기를 하곤 하는데, 자세히 읽어보면 스스로 해결 가능한 에러들도 충분히 있다. 또 검색을 해도 각 로컬마다 환경이 다르기 때문에 다른 사람의 해결방안이 적용되지 않을 수도 있고 다른 에러를 초래할 수 있는 위험도 있기 때문에 에러가 발생했을 땐 어떤 에러가 발생했는지 먼저 잘 확인하는 과정이 필요하다고 생각한다.

 

2. 테스트 코드 작성

처음에 테스트 코드를 작성하려면 어떻게 작성해야 하는지도 모르겠고, 개발해야 하는데 시간 아깝게 굳이 작성해야 하나?라고 생각이 들 수도 있다. 처음엔 테스트 코드 작성방법에 대해서 공부해야 하긴 하지만 테스트 코드를 잘 작성해 놓으면 개발 속도가 오히려 상승한다. 기능이 잘 동작하나 확인하고 싶을 때 코드 전체를 실행시킬 필요 없이, 테스트 코드만 실행시켜서 동작이 잘 동작하는지, 에러가 발생하는지 모두 확인 가능하다. 물론 테스트 코드가 훨씬 빠르다. (코드 내용이 많을수록) 강의에서 김영한 강사님도 현업 개발에서 5-60 퍼 많으면 7-80 퍼 정도의 시간은 테스트 코드를 작성하는데 시간을 쓴다고 한다. 현재 테스트 코드를 작성해 본 적이 없다면 한번 작성해 보기를 권한다!

 

3. 한발 물러서기

가끔 프로젝트에 몰입하고 매몰되다 보면 간단한 문제도 어렵게 느껴지거나 못 볼 때가 많다. 그럴 땐 잠깐 물러나서 쉬거나 천천히 보다 보면 쉽게 해결될 때도 있다.

 

4. 물어보기

주변에 함께 공부사람들이 있다면 이 문제를 미리 겪었거나 해결방안을 알고 있는 사람이 있을 것이다. 없어도 물어보는 과정에서 해결방안이 떠오를 수도 있다. 혼자 고민하는 과정도 물론 좋지만 이 과정에서 너무 시간을 많이 쓰게 되면 효율이 너무 떨어지기 때문에 적당한 선을 지키는 것도 좋은 방법이라고 생각한다.

 

 

 

 

728x90