22.11.30.(수)~ 12.02.(금) TIL- 삽질의 연속
11.30.(수) ~ 12.02.(금)
출근하기 전에 <실전! 스프링 부트와 JPA 활용2> 강의들었다. 주문조회 API를 Entity로 노출하는 것와 DTO로 노출하는 것, 그리고 fetch 조인에 관한 강의 3편을 들었다. 강의 시작 할 때 JPA를 완전히 이해하고 들으라고 했다. 하지만 일단 강의를 듣고 나중에 실습하면서 이해할려고 했다. 그래도 일단 이해한 것은 entity로 그냥 노출시키면 relation 관계에서 무한로딩이 빠질 수 있다는 점이었다. 해결 방법은 해당 entity 필드 양쪽 중 한 곳 에@JsonIgnore를 처리해야한다. 게다가 relation 걸린 수 많큼 1+N의 쿼리가 나가는데 이럴 때 fetch join을 사용하면 쿼리가 한 번만 나갈 수 있다.
JPA를 실무에서 많이 사용하고 편하다고는 사용하기 위해서는 공부를 많이 해야 될 것 같다는 생각이 들었다.
우선 사내에서는 mybatis를 사용하니 우선 거기에 익숙해지고 천천히 JPA를 공부해보아야 겠다.
회사에서는 이제 세팅된 스프링부트 코드 해석하고 테스트로 패키지를 따로 만들어서 그 안에 Controller, Mapper, Service, Repository, Entity 등을 다 넣어서 테스트 했다. 하지만 에러가 발생했는데 알고보니 MapperScan, EntityScan가 설정된 경로 외 다른 곳에 패키지를 만들어서 실행이 안되었다. 처음 접해보는거라 삽질을 많이한다.
게다가 테스트로 코드 작성하는 것도 오래 걸리고 나의 뇌가 버벅되어 생산성이 안 나오는 느낌이었다. 빨리 익숙해져야지... VSCode 쓰다가 intelliJ 잠깐 쓰다가 STS쓰니까 단축키 버퍼링도 온다...
또한 Redis를 사용하여 토큰 값을 저장하였다. Redis 이야기는 많이 들어보았다. 하지만 사용하지는 않아서 다른 DB랑 똑같은 줄 알았다. Redis를 파고보니 key-value로 데이터를 저장하는 DB였다. 이렇게 새로운 사실을 알고나면 신기하지만 이걸 왜 아직까지 몰랐을까라고 생각하면 아찔하다.
또 Rest API를 사용하기 위해서 restTemplate를 사용해보았다. 세팅된 코드에는 RestTemplate를 @Configurete로 저장하여서 사용하였다. 이걸 인스턴스로 어떻게 꺼내어 사용하까 고민했는데 다른 분에게 물어보니 @Autowired로 사용해서 꺼내쓰면 된다고 하였다. 왜 그 생각을 못했을까... 이렇게 다시 Spring Container에 대해 배운 것이 생각이 났다. 이제 안 까먹겠지?
restTemplate.exchage 쓰려다가 안되서 어짜피 post로 외부 API 받아올거라 restTemplate.postForEntity로 사용했다.
JS에서 Axios를 사용했는데 사용법이 좀 다른 것 같다. 근데 이것도 익숙해지면 편해지겠지?
요약
삽질을 많이했다. 코드 작성하는 속도가 느리다. 뇌가 버벅거린다. 나만의 단축키를 하나 만들어서 다른 코드 편집기를 사용하더라도 그거를 적용해야겠다.
이제 담주부터 프로젝트 진도 나가겠지? 너무 떨린다... 근데 빨리 프로젝트하고 싶기도 하다. 배운 걸 빨리 써먹고 싶다.
댓글을 작성해보세요.