코딩은 내일부터

[우테코] 우아한테크코스 생존기 (6)(@Repository의 예외처리) 본문

우아한 테크 코스(우테코)/우테코 공부

[우테코] 우아한테크코스 생존기 (6)(@Repository의 예외처리)

zl존 비버 2023. 4. 22. 17:14
728x90

스프링을 처음 사용하면서 스프링의 기능을 편리하게 쓸 수 있는 어노테이션들을 배웠다.

 

여러 용어들을 배우면서

@Repository어노테이션을 사용하면 프록시를 생성하고~ 예외를 처리해주고~

이런 내용을 크루들에게 들었지만 어떻게 처리되는지 알지는 못했다.

 

폴로한테 달려가 예외를 어떻게 처리하는지를 듣고 그 내용을 바탕으로 글을 쓰겠다.

 

 

먼저 영속성(Persistence) 이란
데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말한다.

 

이러한 영속성 때문에 DB라는 공간을 만들고 그 공간에 접근하는 기술을 JDBC라고 한다.

(JDBC,JPA,... 등등 여러가지 있다.)

 

그런데 JDBC를 사용하면 모든 Exception은 SqlException이라는 예외로 처리된다.

이러한 SqlException을 잡아주는 방법은 throws으로 잡아줘야 한다.

 

@Repository 어노테이션을 사용하면 add 메소드에 SqlException를 catch문을 통해 안 잡아줘도된다.

(SqlException을 신경쓰지 않아도된다는 것이다~~~)

 

그러면 SqlException은 어떻게 처리되냐면 Spring이 DataAccessException이라는

예외로 포장해줘서 처리해준다.

(예외는 붙잡아 처리하지 않아도 되는 RuntimeException으로 던져준다는 얘기당)

 

하지만 Spring이 제공해주는 JdbcTemplate클래스를 사용하면

JdbcTemplate이 SqlException을 DataAccessException으로 포장해준다.

(이 경우에는 throws까지 안붙여도된다.)

 

그러면 여기서 @Repository을 사용하는 이유가 궁금해진다.

이 궁금증은 @Service 어노테이션을 보면 해결이된다.

 

@Service 어노테이션은 @Conponent어노테이션과 다른점은 명시적인 차이 밖에없다.

이러한 경우를 생각해보면 @Repository를 사용하는 이유는 명시적으로(가독성을 위해) 사용하면된다라는

결론은 내렸다.

 

이 내용을 공부하면서

 Spring의 어노테이션은 어떤 일을 하기도하고, 보다 명시적인 표현을 해주는 용어로 사용하기도 한다는 것을 배웠당.

스프링 무서웡