본문 바로가기

모락6

테스트를 통해 JPA Entity 영속성에 대해 알아보자 (2) 예시로 사용된 코드는 깃허브를 통해 확인할 수 있습니다. 1편에 이어서 작성하는 글입니다. 이 글에서는 EntityManager의 merge 메서드에 대해 다룹니다. 학습을 진행하면서 이미 id 필드가 존재하는 Entity를 save 하면 어떻게 될까? 에 대한 의문이 생겼습니다. 이에 대해서 테스트를 진행하고, 헷갈리는 부분에 대해 정리해볼 수 있었습니다. 테스트는 아래의 Member Entity를 이용하여 진행하였습니다. 1. 이미 저장된 id를 가지는 Entity를 또 save 하면 어떻게 될까? 이에 대해 다음과 같은 테스트를 작성해보았습니다. 멤버1을 저장하고 멤버 1의 id를 이용해 멤버 2를 저장하였습니다. 이때 멤버 2를 저장하였지만, 저장된 결과로 반환된 저장된_멤버 2와는 다른 객체로 .. 2022. 8. 29.
테스트를 통해 JPA Entity 영속성에 대해 알아보자 (1) 예시로 사용된 코드는 깃허브를 통해 확인할 수 있습니다. 모락 프로젝트를 진행하면서 다양한 상황에서 영속성이 어떻게 적용되는지에 대해 정확하게 알지 못하고 JPA를 사용해왔습니다. 따라서 테스트를 통해 영속성에 대한 학습을 진행해보았고 헷갈리는 부분에 대해 정리해볼 수 있었습니다. 1편에서는 EntityManager의 persist 메서드에 대해, 2편에서는 merge 메서드에 대해 다룰 예정입니다. 테스트는 아래의 Member Entity를 이용하여 진행하였습니다. 1. save 하려는 Entity 객체와 save 후 반환되는 Entity 객체는 동일한 객체일까? 다음의 테스트를 통해 살펴보겠습니다. 위의 테스트는 통과합니다. save 하려고 만든 멤버 객체와 save 후 반환되는 저장된_멤버 객체가 .. 2022. 8. 29.
JPA entity에 validation annotation을 붙인 이유 예시로 사용된 코드는 깃허브를 통해 확인할 수 있습니다. validation annotation을 붙인 이유와 생성자 검증의 맹점에 대해 작성한 글입니다. DB에 있는 데이터들을 100% 신뢰할 수 있다!라고 생각한다면 이 글은 읽지 않으셔도 좋습니다. 모락 프로젝트를 진행하면서, Entity 필드의 검증 로직이 존재해야 하는 곳에 대한 토론을 많이 진행했습니다. 우리는 토론의 결과로 검증을 위해 Entity 필드에 validation annotation을 붙이는 것을 택했습니다. 모락에서 사용되는 Entity에 대한 예시로는 다음과 같습니다. Entity 필드에 대해 올바른 값인지 확인하는 방법은 2가지가 있습니다. 1. 위와 같이 각 필드에 validation annotation을 붙이기 2. Ent.. 2022. 8. 28.
모락의 Git branch 전략 Git branch 전략을 도입한 이유? 프로젝트 이전까지는 혼자서 개발을 진행했기 때문에 하나의 branch에서 편하게 작업할 수 있었다. 모락 프로젝트에서 6명의 개발자가 함께 코드를 공유한다. 6명이 하나의 branch에서 작업을 진행한다면 매우 많은 conflict들이 발생했을 것이다. 따라서 우리는 6명이 동시에 여러 작업을 수월하게 수행하기 위해 Git branch 전략을 도입했다. Git branch 전략 버전 1 다음 그림은 제일 처음으로 생각했던 branch 전략이다. 가장 간단하고 도입하기 쉬운 전략이다. 이 전략은 main branch와 feature branch 2개로 이루어진다. main : 실제 서버에 배포되는 production 코드가 존재하는 branch feature : 기.. 2022. 8. 27.
모락 프로젝트 전체 회고 프로젝트가 끝나고 느낀 점 이전까지 프로젝트를 제대로 해본 경험이 없었다. 앞으로는 제대로 프로젝트를 진행해본 경험이 있다고 말할 수 있게 되어 기쁘다. 프로젝트를 경험해보기 전에는 진정한 협업을 해보지 않았다. 페어프로그래밍이 협업이라고 생각해온 나에게 협업의 기준을 높여준 것 같다. 물론 나중에 실무에서 경험하게될 것에 비하면 이 모락 프로젝트도 애들 장난 수준의 협업일 수도 있다. 그래도 이 경험이 충분히 밑거름이 될 것이라고 생각한다. 매일 팀원들과 함께 하나의 목표를 가지고 고민을 했던 시간들이 굉장히 소중한 경험이었다. 프로젝트를 진행하면서 개발자 진로에 대한 생각도 많이 들었다. 협업하는 과정이 정말 좋은 경험이었지만, 뜻대로 되지 않는 날도 많았다. 예를 들어 팀원들간의 의견 조율이 어려웠.. 2022. 8. 22.
모락 프로젝트의 서버 구조 (리버스 프록시) 모락 프로젝트 세 번째 스프린트에서 서버 구조를 설계하였습니다. 서버 구조를 설계하기 이전에 우리의 통신 방식은 다음과 같았습니다. 1. 정적 파일을 요청할 때는 정적 파일이 담긴 서버에 요청을 보냅니다. 2. 서버의 API 요청을 할 때는 서버로 요청을 보냅니다. 이러한 구조로 서비스를 실행할 때 문제가 있었습니다. 사용자가 서버 내부의 데이터가 필요하다면 WAS에 직접적으로 요청을 보내야 했습니다. WAS에 사용자가 직접적으로 접근할 수 있게 하였을 때는 여러 문제가 발생할 수 있습니다. 1. 보안 제일 큰 문제는 보안입니다. WAS에 직접적으로 접근이 가능할 경우 데이터베이스가 털릴 가능성이 있습니다. 데이터 베이스에는 우리의 중요한 데이터들이 많이 있기 때문에 항상 조심히 지켜줘야 합니다! 2. .. 2022. 8. 8.