브래드 킴 2024. 1. 20. 16:54
728x90

이번주 강의 내용

이번주에는 스프링 기본강의를 진행했다.
 
주로 Controller에서의 http통신을 위해 값을 주고받는 패턴과 Repository 레이어에서의 기술들에 대해 학습했다.
 
Repository는 JDBC, mybatis, jpa ,spring data jpa에 대해 배웠고, spring data jpa를 위주로 향후 수업이 진행될 예정이라 더 강조해서 진행했다. 나머지 기술도 추후 본인이 어떤 회사에서 어떤 기술을 사용하게 될지 알수 없으니, 한번쯤은 복습해두길 바란다. 해당 기술을 통해 orm기술인 spring data jpa가 어떤 측면에서 편의가 향상됐는지도 이해할수 있을것이다.
 
 jpa는 아직 본격적인 DB관계성이 나오질 않아 Entity를 통해 DB를 생성하는 기본적인 방법과 내장된 메서드의 사용법을 배웠다. 다음주부터 본격적인 관계성 설정과 그에 따라 발생하는 문제점과 해결책 등을 배울 것이다.
 
service레이어에서는 예외와 트랜잭션처리에 대해 강조를 했다. 왜 service레이어에서 강제 예외를 발생시키는 코드를 개발자가 만드는지 그리고 왜 해당 레이어에서 try catch를 통해 예외처리를 하기보다는 controller 레이어로 throws를 하는지에 대한 이해를 트랜잭션처리과정과 연계지어 수강생들이 이해 할수 있으면 좋겠다.
 
예외처리와 그에 따른 응답을 적절하게 사용자에게 주는 것은 서버개발자로서 중요한 역량이다. 그래서 rest api에서 적절한 응답코드, 응답메시지를 주기 위해 많이 사용되는 ResponseEntity에 대한 주요 패턴에 대해서도 강의했다. 예외처리와 묶어 잘 정리해두길 바란다.
 
그외에도 Servlet의 HttpServletRequest객체와 HttpServletResponse객체를 직접 활용한 방식에 대해 강의했다. HttpServletRequest는 Controller를 사용하면서도 종종 직접 Header값을 꺼내기 위해(특히 세션) 사용되곤 하니 해당 내용에 대한 이해도 DispatcherServlet 등의 역할과 함께 유기적으로 이해를 해두면 좋을것 같다.

다음주계획

다음주부터 시작되는 게시판서비스에서는 2개의 테이블이 등장하는 만큼 엔티티간의 관계성, 세션을 통한 로그인처리, 테스트코드 작성, AOP와 로그처리기술, ControllerAdvice같은 기술을 사용한 예외처리 인터셉트, Batch와 스케쥴러, 페이징처리 같은 웹서비스에서 빈번히 사용되는 기술에 대해 다룰 예정이다.
 
3주차의 주문관리시스템에서는 더 많은 테이블을 가지고 rest api 개발을 진행한다. 이때에는 토큰을 통해 로그인처리를 하고 스프링과목의 마무리 단계로서 상당부분 수강생들이 개발을 직접해볼수 있게 수업을 진행한다.
 
총 3주라는 제한된 시간에 온전히 면접까지 커버할수 있는 이론을 더해서 스프링 강의를 진행하기 위해서는 일단 확실한것은 항상 천천히 진행하는게 쉽지만은 않다는 것이다. 최대한 속도가 빠르다고 느껴지지 않게 이해가능한 설명을 할수 있도록 노력을 해야 겠다.
 
이번강의는 나의 첫 full타임강의이고 온전히 취업목적을 가지고 모인 사람들을 대상으로 하는 첫 강의인지라 큰 포부와 각오를 가지고 임했다. 맡은 수강생들이 모두 좋은 회사로 취업할수 있게 하는게 나의 목표였고, 지금도 그렇다. 사실, 수강생들의 취업이라는게 내 개인커리어와는 상관이 없고 어떠한 인센티브가 있는것도 아니지만 항상 그래왔듯 그냥 잘해내고 싶다.
 
그러다보니, 누군가에게는 수업의 난이도가 높고 빠르다고 느낄수 있을것 같다. 최근에 개발자에 대한 수요가 꺾여서 취업도 어려워지고 있고, 방대한 지식을 신입에게 요구하다보니 내 마음도 조금 급해지기도 하고 수업의 기준치도 다소 올라간것은 사실이다.
 
우리가 기준을 낮추면 몸도 마음도 편해지겠지만, 그게 모두가 원하는 결과를 낳지는 않을것 같다. 말은 안하겠지만 모두들 좋은 회사와 높은 목표를 가지고 있으리라 생각하기에, 원하는 결과를 얻기 위해 함께 노력하고 싶다.
 
(너무 수업이 빨라져서 어렵거나 제가 급발진해서 따라잡기  어려우면 꼭 수업중이나 따로 말해주세요~)

728x90