본문 바로가기

전체 글

(41)
우아한테크코스 레벨2 회고 우아한테크코스 레벨2(7~8월)가 끝났다. 기념으로 회고를 작성하기로 했다. 지난 두 달간 배운 것들 레벨1 때는 자바, 클린코드, TDD, 페어프로그래밍을 위주로 배웠다면, 레벨2에서는 스프링을 위주로JPA, 배포, AJAX를5주간 배운 뒤에3주간 미니 프로젝트를 했다. 스프링은 개발하면서 조금씩 깊이 익히는 목적으로 스프링부트로 진행했다. 간단한 미션을 주고 원하는 사람에 한해서 추가 미션이 있었다. 사실 스프링을 조금 알고 있었는데도 막상 해보니 아주 간단하지도 않았다. 특히 이번에 처음으로 ControllerAdvice, Interceptor, ArgumentResolvor도 처음 사용하면서 많이 배울 수 있었다. JPA는 매커니즘과 관계매핑을 배웠다. 배포는 EC2에 올리고 쉘스크립트를 작성했다.. 우아한테크코스 2019. 12. 28. 18:53
JPA - One To Many 단방향의 문제점 주변에서 One To Many 단방향에 관해서 물어볼 때마다 저는 항상 이렇게 대답했습니다. 김영한 님의 인프런 강의에서 봤는데~ One To Many 단방향은 좋지 않다. 차라리 양방향을 해라. 이유는 ~ 때문이다.. 이렇게 대답했습니다. 하지만 직접 문제를 겪어 본 적이 없어서 말에 설득력이 부족했습니다. 그래서 직접 한 번 실험해보고 문제점을 정리했습니다. 먼저 김영한님은 일대다 단방향 매핑은 이러한 단점이 있다고 하셨습니다. 엔티티가 관리하는 외래 키가 다른 테이블에 있음 (Many에 외래키 존재) 연관관계 관리를 위해 추가로 update sql 실행 (성능상 큰 차이는 없다) 개발을 하다 보면 B를 만졌는데 A도 update sql문이 나가니 헷갈린다. 그래서 필요하다면 일대다 보다는 양방향 관.. JPA 2019. 12. 28. 18:52
[질문]많은 필드를 가진 서비스 클래스 어떻게 해결해야 할까요? 현재 페이스북을 따라 만드는 미니프로젝트를 진행 중입니다. 기능이 추가되면서 어느 순간 하나의 Service가 5개의 필드를 가지게 되었고, 리팩토링을 할 시점이 왔구나!를 느꼈습니다. 하지만 아무리 생각해도 좋은 방안이 생각나지 않아서 이렇게 질문을 남기게 되었습니다. 현재 문제점과 제가 생각한 해결 방법에 대해서 정리했습니다. 제 해결 방법에 대한 의견이나 혹은 다른 방법에 대해서 조언해 주시면 감사하겠습니다. 현재 상태 게시글 이미지 위 이미지는 프로젝트의 게시글로, 게시글에서 보여줘야 할 부분은 총 5가지입니다. 내용, 작성일, 수정일, 작성자 이미지 혹은 동영상 댓글 개수 좋아요 개수 공유 횟수 (현재 미구현) Post 엔티티의 연관관계 Post는 현재 User와 UploadFile을 단방향으로.. Spring 2019. 12. 28. 18:42
Service Layer Testing in Spring Boot (feat. Mockito) 이번에 서비스 레이어 테스트 코드를 작성하면서 겪었던 고민과 해결 과정을 작성해보려고 합니다. 주의 저도 아직 배우는 과정으로 잘못된 부분이 있을 수 있습니다. 혹시라도 잘못된 부분을 발견하시면 피드백 부탁드립니다. 서비스 레이어 역할 먼저 제가 생각하는 서비스 레이어의 역할을 간단하게 정리해봤습니다. 컨트롤러에 대한 프로바이더 도메인을 연결, 협업 및 흐름 제어 실제 비즈니스 로직은 도메인에 위임 리포지터리로부터 도메인 객체를 구한다 트랜잭션 관리 주체 과연 서비스 레이어는 어디까지, 얼마나 테스트해야 할까? 고민이 되었습니다. '블로그 보니까 Mockito를 사용하라는데?' '음.. 이거 짜인 시나리오대로 테스트가 진행되니까 성공이 당연한 거 아냐?' 'Mockito 잘 모르겠고 그냥 아는 방식으로 .. Spring 2019. 12. 28. 18:24
[객체지향] OCP (개방 폐쇄의 원칙 : Open Close Principle) 글의 순서 if-else의 문제점 OCP (Open Close Principle) 전략 패턴 (Strategy Pattern) OCP란? Open Close Principle : 개방폐쇄의 원칙 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 로버트 마틴이 명명한 객체지향설계 5대 원칙 SOLID중 하나입니다. OCP는 소프트웨어 구성 요소(컴포넌트, 클래스, 모듈, 함수)는 확장에 대해서는 개방(OPEN)되어야 하지만 변경에 대해서는 폐쇄(CLOSE)되어야 한다는 의미입니다. 즉, 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다는 의미입니다. 위 코드를 보시면 확장을 위해서 기존의 코드가 수정되었습니다. 이런 경우에 Close를 위반하게 됩니다. OCP에서 핵심은 .. Java 2019. 12. 28. 17:50
[객체지향] if-else의 문제점 글의 순서 if-else의 문제점 OCP (Open Close Principle) 전략 패턴 (Strategy Pattern) 이번에 OCP와 전략패턴에 대해서 설명하려고 합니다. 자세한 이론적인 이야기 보다는 코드와 함께 가볍게 설명하면서 대충 이런거구나 느낄 수 있는 정도로만 소개하겠습니다. 자세한 이론은 참고할만한 링크를 남기겠습니다. 왜 OCP인가? 이해하기 위해서 먼저 if-else의 문제점을 파악하고 가겠습니다. 프로그래밍을 하다 보면 if 문을 많이 사용합니다. 하지만 if 문을 사용하면 몇 가지 문제점이 있습니다. 1. If-else의 문제점 변경, 확장이 될 수록 코드가 복잡해져서 수정할 위치를 찾기가 어렵다. 실수로 추가하지 않고 누락하는 경우가 생긴다. 즉, 유지보수가 점점 어려워집니.. Java 2019. 12. 28. 17:45