영속 상태의 오해
·
JPA
JPA를 사용하면서 영속 상태에 대해서 오해가 있었는데, 누가 보면 아주 귀여울 오해를 하고 있었다."이런 것도 몰랐냐?" 라고 생각 할 수 있지만, "이런 것도 몰랐구나~" 하는 너그러운 마음으로 봐줬으면 한다.바보같은 오해JPA에서 영속 상태는 엔티티의 식별자로 판단한다.라고 생각했지만, 이것은 아주 바보같은 생각이었다. JPA에서 영속 상태로 판단하는건 "영속화가 되었는가"이다. 영속화를 시키기 위해서는 식별자가 반드시 필요한 것이다.Member m1 = new Member(); // 비영속m1.setId(1L); // 여전히 비영속em.persist(m1); // 이제 영속 상태엔티티에 식별자가 있어도, persist()를 호출 하지..
읽기 좋은 네이밍(with. 메서드 분리)
·
Refactoring
개발자의 역량을 판가름 하는 중요한 요소는 기능 구현의 능력도 있겠지만, "얼마나 유지보수하기 좋은 코드를 작성하느냐?" 도 개발자의 역량을 판단하는데에 중요한 척도가 될 수 있다. 유지보수하기 좋은 코드를 작성하기 위해서는 읽기 좋은 코드, 변경에 유연한 코드를 작성하는 능력이 중요하다. 이번 글에서 얘기할 주제는 읽기 좋은 코드, 그 중에서도 메서드 분리와, 네이밍에 대한 글이다.💁‍♂️ 이름, 그게 얼마나 중요하길래?기능 구현만 잘하면 되지, 이름이 뭐가 그렇게 중요한가?라고 생각할 수 있다. 그렇게 생각하는 개발자라면 글쎄.. 같이 일하기는 힘들지도 모르겠다 이름을 짓는 것은 생각보다 많이 어렵다. 나는 이름을 잘 못지어서 항상 좋은 이름을 짓기 위해서 고민을 많이 하는 편이다.기능 구현보다 네..
REST API에서 GET vs POST
·
Spring
단순 조회는 무조건 GET이어야 할까?API를 설계할 때, 단순 조회 기능이라면 무조건 GET을 사용하는 것이 좋을까?조건이 늘어나고, URL이 복잡해지고, 필터가 많아지더라도? 아래 메서드의 API는 날짜와 테마를 통해서 예약이 가능한 시간을 응답하는 GET 요청이다. 그리고 다음과 같은 피드백을 받았다.모든 것을 http get 메서드 uri 를 통해 표현할 필요는 없습니다. 우리는 예약 가능한 시간을 얻어오는 것이고, 이에 필요한 리소스는 http post 의 body 를 통해 표현하는 것이 확장하는데 있어서도 효율적일거에요 :)모든 조회를 GET으로 표현하지 않아도 괜찮구나!당연히 조회 요청은 GET메서드만 사용해야 한다는 생각을 하고 있었다. Microsoft의 Azure Search REST..
final 키워드는 정말 불변인가?
·
Java
final 키워드는 불변 ?흔히 final 키워드를 사용하는 이유로불변을 보장해주니까요!라고 얘기한다. 그렇다면 정말 final은 불변을 보장해줄까? final 키워드를 사용했을 때 많이들 언급하는 이점으로변경 불가불변정도가 있을 것 같다. 해당 글에선 불변에 초점을 맞춰서 얘기해 볼 것이다.final 사용범위final 키워드는클래스 레벨메서드 레벨변수 레벨에서 사용될 수 있다. 모두 다 중요한 개념이니, 하나씩 간단하게 짚고 가보자.final class클래스를 final로 선언하면 상속이 불가하다. final 키워드는 재할당을 금지하기 때문에 오버라이딩(재정의) 할 수 없다.따라서 클래스를 final로 선언하면 자식에서 부모의 메서드를 오버라이딩 할 수 없다.🤔 메서드가 없는 final 클래스는 왜 ..
우아한테크코스 레벨 1 회고
·
우아한 테크코스
정신없이 레벨 1이 지나갔다. 돌아보니 2달 정도 되는 기간 동안 많은 일들이 있었다. 원래는 주차별로 글을 쓰려고 했지만 그러지 못했다. 우테코의 일정이 바쁘다는 것은 들었지만 이렇게 바쁠 줄은 몰랐으니 말이다. 레벨 1을 마쳤으니 하나씩 기억을 꺼내보자.우테코는 어떤 곳이야?첫날, 느꼈던 감정이다. OT를 진행하면서도 실감이 나지 않았다. 모든것이 낯설고 하나도 모르겠지만 나쁘지 않았다. 앞으로 우테코에서 일어날 일들을 생각하니 설레었다. 아무것도 가르쳐 주지 않아요우테코는 수업이 거의 없다. 그마저도 수업시간은 그냥 떠드는 시간(?)이다. 우테코가 주입식 교육이 없다는것은 알고 있었지만 이 정도로 아무것도 안 가르쳐줄 줄은 몰랐다.배우러 왔는데 아무것도 안 가르쳐 주네?빨리 미션을 어떻게 해결할 수..
유연성 강화 스터디 회고
·
우아한 테크코스
들어가며우테코에서는 '유연성 강화 스터디'(줄여서 유강스)라는 특별한 활동을 한다. 의문이 들었다.개발 교육을 하는 곳에서 왜 유연성을 강화시키지?왜 유연성을 강화 시켜야하지?유강스는 정말 의미 있는 활동이었을까.레벨1을 끝내는 시점에서 유강스는 나에게 어떤 의미였는지 그냥 경험을 이야기 해보려고 한다.너는 어떤 사람이야?인정받는 개발자가 되고싶다는 욕심이 우테코로 오게 하였다. 가진 것에 비해서 욕심이 많았기 때문에 항상 잘해야 한다는 불안감을 안고 살았다. 우테코에 가면 인정받는 개발자가 되어서 일이 술술 풀릴 것 같았다. 꿈이 너무 컸다. 여긴 치열하고 매번 한계에 부딪힌다. 그 덕에 작은 불씨였던 불안함은 금새 커다랗게 번졌다. 불안함이 커질수록 몸과 정신은 무너져갔다.어딘가에나 불안해요 도와주세..
[우아한 테크코스 7기 백엔드] 최종 합격 회고
·
우아한 테크코스
우아한테크코스에 지원하실 분들에게 도움이 되었으면 합니다!길고 힘들었던 우아한 테크코스 선발 과정이 종료되고 '합격'이라는 문구를 받아볼 수 있었습니다. 해당 회고를 통해서 우테코 지원 과정부터 종료까지의 과정을 편하게 이야기하려고 합니다. 내년 8기에 지원하실 예비 지원자 분들께서 이 글을 보고 도움이 되었으면 좋겠네요!지원 이유저는 졸업을 앞둔 컴퓨터 공학과 학생입니다.우테코에 지원하기 전 저의 상황은 지방 사립대 컴퓨터 공학과학점 3.5/4.5 자격증 X수상 경력 X제대로 된 프로젝트 경험 없음지방대에 학점도 낮고, 개발 경험이 많지도 않은, 거의 뭐 비전공자라고 해도 손색이 없네요! 개발공부를 시작한 건 군 제대 후 3학년쯤이었습니다. 뒤를 돌아보니 상황은 생각보다 심각했습니다. 지방대에, 낮은 ..
[우아한 테크코스 7기 백엔드] 1차 합격 & 최종 코딩테스트 회고
·
우아한 테크코스/프리코스
최종합격을 하고 적는 '1차 합격 & 최종 코테 후기' 이지만 다음 기수인 8기를 지원하시는 분들께 도움이 되고자 회고를 적습니다! 4주간의 프리코스가 끝나고 조금 타이트했던 일정을 느슨하게 풀고 쉬엄쉬엄 하루를 보냈습니다. 프리코스가 종료되고 1차 합격자 발표까지 4주 정도의 기간이 있는데, 저는 이 기간동안 다행이도 특별하게 할 일이 없어 혹시나 모를 최종 코딩테스트를 준비 했습니다. 최종 코딩 테스트 준비프리코스가 끝나고 디스코드에 최종 코딩테스트를 준비하는 스터디가 여럿 올라왔습니다. 참여하고 싶은 마음도 있었지만 거의 모든 스터디가 서울에서 열렸기 때문에 부산에 거주하던 저는 스터디에 참여할 수 없었습니다. 그리고 대부분의 스터디가 몇날 며칠 장소를 대여해 시간을 정해놓고 스터디를 하였는데 저는..
Enum 사용 시 생각해 볼거리
·
Java
우테코 프리코스 로또 미션의 코드리뷰를 보다가 Enum 사용에 관한 피드백을 받게 되었습니다. "ENUM 이 로직의 일환인 조건 파악을 가져도 된다고 생각한 기준이 있나요?"위 피드백을 받게 된 로직을 살펴보겠습니다.우선, 로직을 간략하게 설명하자면, 로또 등수를 계산하기 위해서 일치하는 당첨 번호 개수와, 보너스 번호 당첨 여부를 매개변수로 받아서 LottoRank를 순회하며 isMatchingCondition() 메서드를 통해 일치하는 당첨 등수를 반환하는 로직 입니다.구현 이유구현 할 당시에는 "당첨 등수가 자신의 당첨 등수를 계산하는 책임을 가지는 것이 맞는 것 아닌가?" 라는 생각으로 구현했습니다.그래서 Enum과 함수형 인터페이스를 사용해서 각각의 상수에 메서드를 오버라이드 하여 각 상수별로 ..
[우아한 테크코스 7기 백엔드] 프리코스 3주차 회고 - 로또 -
·
우아한 테크코스/프리코스
우아한 테크코스 프리코스 3주차가 끝났습니다.이번 3주차 미션은 로또 미션 이었습니다. GitHub - woowacourse-precourse/java-lotto-7Contribute to woowacourse-precourse/java-lotto-7 development by creating an account on GitHub.github.com아래는 제출한 PR 주소 입니다. [로또] 이동엽 미션 제출합니다. by dye0p · Pull Request #198 · woowacourse-precourse/java-lotto-7신경쓴 부분 README를 통해서 어떤 프로그램인지 알 수 있도록 REAMDE 작성에 집중하였습니다. 클래스 분리와 객체들간의 협력에 집중하였습니다. 읽기 좋은 코드와 메서드 네..