앞날 창창보
article thumbnail
int와 Integer중에 무엇을 골라야할까?
기술고민 2024. 3. 28. 20:01

다들 Java로 개발하다보면, 가끔 int, long과 같은 기본 타입을 사용해야할지, Integer, Long과 같은 박싱된 기본 타입 사이에서 고민해본 적이 있을 것이다. 나는 NPE 예방과, 객체를 생성하지 않아 메모리의 효율성 때문에, 기본 타입을 쓰는 것을 선호했지만, 개발하다보니 모두가 박싱된 원시타입을 사용하길래 나도 그렇게 살아왔다. 그랬던 전 날들을 반성하고있다. 이 글은 기본 타입과 박싱된 기본 타입 중 선택하는 가이드 라인을 제시하는 것을 목표로 한다. 두 타입의 차이는 무엇일까? 이펙티브 자바에서 말하는 차이는 3가지가 있다. 1. 기본 타입은 값만 가지고 있으나, 박싱된 기본 타입은 값에 더해 식별성(identify)이란 속성을 갖는다. 박싱된 기본 타입은 값이 같아도, 서로 다르..

article thumbnail
???: 빌더 패턴은 필수 값을 받지 못하잖아요.
기술고민 2024. 3. 26. 12:25

Lombok에서 지원하는 @Builder를 사용하다보면, 필수 값을 빼먹어서 곤란했던 적이 있을 것이다. 그래서 나는 솔직히 Builder를 안티패턴 취급하며, 협업에서는 지양해야 한다고, 혼자 마음 속으로 생각하고 있었다. (필수 값을 만들 수 있다는 것을 알기 전까지...) 빌더는 어떤 상황에서 유리할까? 빌더패턴가 좋은 상황은 정말 간단하다. 생성자를 만드는데, 매개변수가 너무 많이 필요한 상황이다. public A(String name, int classNumber, String hobby, String favoriteBook, String favoriteFood, String favoritePerson){ 값 삽입... } new A("이창보", 3113, "축구", 19, "EFFECTIVE ..

article thumbnail
정팩메, 생성자 고를 때 무엇을 고려해야 할까?
기술고민 2024. 3. 25. 15:38

주변 사람들이 언제부턴가 "생성자 쓰지마! 정적 팩토리 메서드(이하 정팩메)가 최고야!"라고 말하기 시작했다. 사실 나는 정팩메를 싫어한다. 이유는 정말 단순했다. 생성자에 굳이굳이 메서드를 한 번 더 감싸기 때문에 코드가 더 늘어나기 때문이다. 그리고 new 라는 키워드가 눈에 훨씬 잘 들어와서, 객체를 생성한다는 것을 잘 보여준다고 느껴졌다. 그러나 나도 이펙티브 자바를 읽고자 마음을 먹었고, 책을 펼치자, "생성자 대신 정적 팩터리 메서드를 고려하라" 라는 말이 눈에 들어왔다. (드디어 찾았다! 범인!) 정적 팩토리 메서드의 장단점 정적 팩토리 메서드는 장점이 많다. 장점 1. 이름을 가질 수 있다. 생성자는 넘기는 매개변수와 생성자 그 자체로는 어떤 객체가 생성될 지 판단 해야하는데 이 과정은 명..

article thumbnail
낙관적 락으로 동시성 이슈 해결하기
기술고민 2024. 3. 21. 19:26

나는 부마위키라는 부산소프트웨어마이스터고등학교의 위키 서비스를 개발하고 있다. 2021년 부마위키에서 느껴질 정도로 문제가 됐던 동시성 이슈가 있다. 동시성 이슈라고 하기엔 동시에 일어나지 않아도 되서 동시성 이슈라고 불러도 되는지 모르겠다 ㅋㅋ 문서 수정자가 문서 수정을 요청하면, DB에 저장된 현재 문서 내용을 전달하고 수정 후 내용을 저장하는 형태이다. 문서 수정자 1, 2가 같은 버전의 문서에서 수정을 시작후, 문서 수정자 1이 수정 내용을 저장하고, 문서 수정자 2가 수정 내용을 저장한다면, 문서 수정자 1이 추가 혹은 삭제한 내용을 사라지게 된다. 자신이 수정한 것을 문서 내역에서 다시 볼 수 있긴하지만, 결국 사용자의 행동을 늘리는 것이기 때문에 개발을 추가로 해야겠다고 생각했다. 나무위키는..

article thumbnail
Java에서 Code Convention 강제 적용 해보기
기술고민 2024. 1. 18. 22:42

이번에 Java로 새로운 프로젝트를 진행하면서 코드 컨벤션을 맞추는 것에 대해서 고민을 많이 했습니다. 코드 컨벤션을 맞춰주는 도구를 Lint 혹은 Linter라고 칭하는 것을 알게 되었습니다. 코틀린은 ktlint가 국룰로 잡혀있기 때문에 린트 선정에 고민이 없지만, 자바는 국룰이 없는 것 같았습니다. 그래서 내가 어떤 Lint을 원하는가 고민을 많이 했습니다. - 린트 적용이 강제여야한다. - 린트 적용이 안되어 있는 부분이 있다면 쉽게 알려주어야한다. - 린트가 적용이 안되어 있는 부분이 있다면, 간단하게 단축키 혹은 gradle task로 수정되어야 한다. 크게 다음과 같은 세가지 요구사항이 있다는 것을 알게되었습니다. 그래서 찾아보던 중 sonarLint와 checkStyle이 있다는 것을 알게..

article thumbnail
신년 목표! (feat. 만다라트)
생각정리 2024. 1. 2. 17:24

저번 글에서 나는 2023년을 회고했고, 앞으로 어떤 사람이 되고자 하는지 짧게 정리했다. 그 정리한 걸 기반으로 신년 목표에 대해서 얘기해 보겠다. 만다라트 올해 목표를 이렇게 정리해 봤다. 나의 올해 목표는 빅테크 기업에 취업하는 것이다. 사실 한국에서 빅테크 기업이라고 하면 네카라쿠배 밖에 없지만 그 회사들 혹은 그에 준하는 회사를 가고 싶다. 가고 싶은 이유를 많이 고민해 봤는데, 사실 큰 이유는 없고 "이왕"이라는 말로 정리할 수 있을 것 같다. 앞으로 커리어 생각하면 좋은 곳 가는 게 훨씬 유리하기도 하다. 아무튼 빅테크 기업에 가기 위해서, 그리고 내가 올 한 해를 알차게 보내기 위해서 다음과 같이 정리를 하였다. 물론 바로 영향을 끼치는 기술적인 부분, 인간적인 부분도 있지만 대부분 앞으로..

article thumbnail
내 인생 가장 짧은 한 해(2023 회고)
생각정리 2024. 1. 2. 00:04

솔직히 2023년은 회고하기 부끄러워서 안 할까 고민했는데 돌아보지 않고, 반성하지 않으면 내년을 아쉽게 보낼 것 같아서 회고해야겠다고 생각했다. 개발자로서 나는 어떤 한 해를 보냈는가? 2023년에 내가 어떤 개발자가 될지 고민하는 한 해였다. 나는 극심한 팔랑귀이기 때문에 내 주변에 누가 있는가, 내가 어떤 말을 들었는가에 크게 영향을 받았다. 대표적으로 내가 개발자로서의 진로를 고민하는 것에 영향을 준 사람들은 내가 쫓아다닌 한 개발자 선배, IT 업체 대표님이 있었다. 먼저 내가 쫓아다닌 한 개발자 선배가 우아한 테크코스로 가면서 학교를 자퇴했다. 4월까지 나는 이 형처럼 우테코가는 것이 꿈이었다. 딱히 별 생각이 있었던 건 아니다. 가고자 하는 뚜렷한 목표도 없었고, 그냥 나에게 개발적인 측면에..

article thumbnail
Repository없이 EntityManager 사용하기
기술고민 2023. 12. 20. 17:18

Repository를 사용하지 않을 것을 추천하는 하이버네이트 하이버네이트 진영은 Repository를 사용하지 않을 것을 추천합니다. 그 이유를 한 번 알아봅시다. https://docs.jboss.org/hibernate/orm/6.3/introduction/html_single/Hibernate_Introduction.html#hello-jpa 하이버네이트를 래핑하는 프레임워크는 하이버네이트가 제공하는 세밀한 데이터 제어를 못 하게 한다. JDBC와 하이버네이트는 큰 차이가 있기 때문에 하이버네이트에서 JDBC로 돌아갈 일은 없다. Repository는 스택트레이스를 더 힘들게 하고 디버깅을 힘들게 한다. 대부분의 쿼리는 여러 곳에서 재사용되지 않으므로, 비즈니스 로직에 EntityManager를 ..

검색 태그