본문 바로가기

우테코7

테스트를 통해 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에 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.
값 객체(VO) 자동차 경주 미션 중 다른 크루들이 값 객체를 사용하여 구현하는 것을 보았다. 값 객체를 알고 있었지만 사용하지 못한 부분에 대해 반성을 하면서 작성하는 반성문 도메인 주도 설계 철저 입문 책을 보고 정리하는 글입니다. 값 객체란? 시스템 특유의 값을 표현하기 위해 정의하는 객체 값의 성질 1. 변하지 않는다. 2. 주고받을 수 있다. 3. 등가성을 비교할 수 있다. 값 객체는 값의 성질을 가지고 있다. 1. 값은 변하지 않는다. 값은 변화하지 않는다. 우리가 값을 수정할 때는 새로운 값을 대입한다. 예를 들면, String greet = "하이" greet = "안녕" greet의 값이 처음에는 "하이" 였지만 "안녕"으로 수정되었다. 그렇지만 이것을 값이 변화했다고 보지 않는다. 값은 "하이", "안.. 2022. 2. 20.
우테코 3주차 후기 프리코스는 저의 모습을 좋은 방향으로 성장시켜 주었습니다. 제일 먼저 개발 실력을 성장시켜주었습니다. 이전까지의 개발 방식은 이기적이었습니다. 단순히 컴파일에 성공하는 코드를 작성해왔습니다. 코드 컨벤션, 매주 받는 피드백 그리고 스스로 찾아 읽어본 책들을 통해 개발 방식에 변화를 줄 수 있었습니다. 타인이 쉽게 알아볼 수 있도록 작성하는 것에 집중하였고 이것이 습관이 되도록 만들었습니다. 그리고 개발자로서 성장시켜주었습니다. 매주 과제를 진행하면서 충분하다고 생각이 들 때까지 리팩터링을 진행했습니다. 그렇지만 항상 다음 과제를 진행할 때 이전 과제에서 발견하지 못한 문제점들을 확인할 수 있었습니다. 이 경험을 통해 프리코스가 아니어도 개발자로 사는 것은 계속해서 문제점을 발견해내는 이러한 과정의 연속일.. 2021. 12. 13.
우아한테크코스 4기 프리코스 후기 프리코스 3개의 과제를 끝내고 느낀 점 작성하기 원래는 1개의 과제를 끝낼 때마다 느낀 점을 작성하려고 하였다. 그런데 과제를 진행하다 보니 느낀 점을 작성할 시간에 과제 해결에 필요한 내용을 공부해야겠다는 생각이 들었다. 그래서 모든 과제를 다 끝낸 지금, 이제라도 느낀 점을 작성해보려고 한다. 프리코스 시작 전 일단 우테코 1차에 합격하고 프리코스 시작까지 5일이라는 시간이 있었다. 이 5일 동안 뭘 하면 좋을까 생각을 하면서 이전 기수 사람들의 블로그를 염탐하였다. 여러 블로그들에서 클린 코드, 람다와 스트림에 대한 중요성을 강조하였고, 그런 글들을 보자마자 바로 클린 코드와, 모던 자바 인 액션 두 책을 구매하였다. 5일밖에 없는 시간 동안 이 두 책을 읽는 것이 크게 도움이 될까?라는 생각을 하.. 2021. 12. 13.