개발 기록

스프링 DB 1편 - 데이터 접근 핵심 원리 후기 본문

JAVA/스프링

스프링 DB 1편 - 데이터 접근 핵심 원리 후기

수염차 2022. 10. 27. 21:45

기록은 어렵다.. 간단하게라도 정리

 

  • 강의 수강 목적

: 실무에서는 아무래도 기존 코드에 맞춰 개발을 하다보니 뭐가뭔지 생각하는게 덜 해졌다고 느껴졌다. 

예외처리도 그 중 하나인데 다른 메소드에서 쓰이는 걸 그냥 그대로 가져와 쓰다가 어느 날은 알고는 써야지 하고 생각이 들었다. 그래서 예외처리에 관한 강의를 찾다가 수강 !

 

- 강의는 JDBC부터 데이터 소스 트랜젝션 예외 많지만 나는 예외처리때문에 들었으므로 정리도 그 부분만 하겠다!

- 예외 기본 문법이라는 내용도 나는 모르고 있어서 듣길 잘 했다고 생각이 들었다.

 

  • 내용 정리

예외 계층

체크 예외와 언체크 예외 차이는 컴파일러의 체크 유무

+ 컴파일러란 - 소스를 컴퓨터 언어인 기계어로 번역하는 작업(컴파일)을 하는 프로그램
+ 빌드 = 컴파일 + 링크(목적 파일을 실행 파일로 만드는 동작)

예외는 잡아서 처리하거나 던지거나 둘 중에 하나 !

 

1. 체크 예외

- 체크 예외는 처리하지 못 할땐 반드시 throws 사용하여 던져야함 (안 던지면 컴파일 오류 발생)

- 반드시 처리해야 하기 때문에 의존관계가 생김

-> 서비스,컨트롤러에도 throws로 처리해줘야 하기 때문에 만약 JDBC기술 변경시 의존하고 있던 예외도 모두 변경해줘야 함 (코드 변경 가능성 생김)

-> 시스템 레벨쪽 예외는 서비스,컨트롤러에서 처리 불가능함에도 불필요한 의존관계가 생긴다

- 반드시 처리해야하는 문제일때 사용하면 좋다. (놓치면 컴파일러 통해 인지 가능)

 

2. 언체크 예외

- 체크 예외와 다른 점은 throws 생략 가능 (생략시 자동으로 예외 던짐), 필요한 경우 잡아 처리하면 됨

- 체크 예외처럼 복구 불가능한 예외에 강제로 의존하지 않아도 됨

- 사용 방법 : 체크 예외를 catch로 잡아 런타임예외로 전환한다. (예외 전환시에는 기존 예외 포함하여 발생 이유 알게하기)

 

-뒤에 추가로 스프링에서 제공하는 인터페이스를 이용해 예외 변환하여 처리하는 내용이 있지만 코드로 설명하는 부분이 많아 생략함.

(대략 내용 = SQL ErrorCode로 데이터베이스 어떤 오류 있는지 확인 가능,

스프링은 예외 변환기를 통해서 SQLException 의 ErrorCode 에 맞는 적절한 스프링 데이터 접근 예외로 변환해준다)

 

  • 느낀점

수강 후 현재 회사 코드에 대해 더 생각할 수 있었다. 생각보다 throws Exception이 많이 사용되고 있는데 난 깔끔해서 좋다고 생각하고 있었다. 하지만 모든 체크 예외를 다 던져서 체크할 수 있는 기능이 사실상 무효화되고 중요한 예외도 놓치게 된다. 그리고 런타임 예외처리는 못 본 것 같아 왜그럴까 생각해보면 지금 서비스가 다 반드시 처리해야하는 쪽에 속해서 인가 싶기도 하다 그땐 다 그럴만한 이유가 있었겠지 ..

그리고 throws Exception이니 서비스에서 오류가 날때 서버 에러라고만 내려와 확인하기 복잡할때가 간혹 있었던 게 생각이 나면서 세세한, 보다 많은 경우의 예외처리가 필요하겠다 느꼈다.

 

이것만 듣고는 언제 체크,언체크를 사용하는 게 좋을지 기준이 딱 생기진 않지만 앞으로 예외처리 코드를 짤 때 한 번 더 생각해볼 수 있겠다.

그렇다고 기존 코드를 막 바꿔볼 수는 없겠으나, 앞으로 내가 개발할 부분에 맞게 적용할 수 있도록 잊지 말아야 겠다.

혹시 나중에 적용하게 되면 기록 하겠음 ! 

 

'JAVA > 스프링' 카테고리의 다른 글

spring boot 데이터 암복호화  (0) 2023.02.18
Type definition error: [simple type,  (0) 2023.02.17
빈 스코프  (0) 2022.03.15
스프링 빈 라이프 사이클  (0) 2022.03.14
조회한 빈이 모두 필요할 때, List, Map  (0) 2022.03.10
Comments