본문 바로가기

분류 전체보기41

[Spring] 트랜잭션 상태를 확인하는 방법 org.springframework.transaction.support.TransactionSynchronizationManager 이용 해당 클래스를 이용하면 현재 트랜잭션 이름과 실행된 메소드가 트랜잭션에 참여중인지 여부를 확인할 수 있다. // 트랜잭션의 이름을 확인한다. // {패키지명까지 포함된 클래스이름}.{메서드이름} 으로 구성되어 있다. // ex: com.hello.user.login TransactionSynchronizationManager.getCurrentTransactionName(); // 실행된 메소드가 트랜잭션에 참여 중인지를 확인한다. // boolean 반환 TransactionSynchronizationManager.isActualTransactionActive(); .. 2023. 10. 11.
[JPA] 같은 엔티티를 조회함에도 불구하고 쿼리가 여러번 날아가는 이유 최근 사내 프로젝트 코드에서 단일 책임 원칙을 지키지 않는 메서드가 발견되어 이를 분리한 경험이 있는데요. 분리를 하게 되면서, 미처 신경쓰지 못한 부분 때문에 같은 엔티티를 조회함에도 불구하고, 조회 쿼리가 2번 날아가게된 삽질 경험이 있어 기록하고자 합니다. 해당 메서드는 금액을 변경하는 로직과 변경 후 금액을 조회하는 로직이 함께 섞여있었는데요. 이는 단일 책임 원칙을 지키지 않는 코드라고 판단되어, 변경 로직과 조회 로직을 아래와 같이 분리를 하였습니다. (로직은 매우 간소화 하였으니 참고 부탁드립니다.) public class MoneyService { private final UserMoneyRepository userMoneyRepository; public MoneyService(UserM.. 2023. 10. 7.
[인프콘 2023] 점진적 추상화 점진적 추상화 추상화 방향 if문 구현 타입이 늘어날수록 if문을 계속 추가해야 할텐데… 확장에 닫혀있는 코드가 되어버린다. (OCP 위반) 타입을 축으로 추상화를 할 수 있다. interface ← class 인터페이스 자체를 변경하는 것은 쉽지가 않다. 하위 구현체들이 모두 영향을 받음 타입을 축으로 vs 행위를 축으로 타입을 축으로 → 타입 확장에 유리 행위를 축으로 → 행위 확장에 유리 어느 방향으로 발전할지 알기는 쉽지 않다. 소프트웨어 발전 방향과 일치하지 않는 추상화는 오히려 더 유지보수하기 힘든 코드가 발생된다. 현실은 더 많은 축이 존재… 다른 방향으로 확장할 가능성이 큼 초기 추상화의 모습과 현실이 전혀 다른 방향으로… → 괴리 발생 요구사항에 비해 훨씬 복잡해짐 추상화를 했음에도 불구.. 2023. 8. 19.
[인프콘 2023] 주니어 시절 성장과 고민들 주니어 시절 성장과 고민들 영한쌤 이야기 JPA JPA를 사용하지 않는 이유 중에, 교육의 문제가 있다는 문제를 파악함 더 나은 환경에서 일을 하는 방법을 고민 → JPA 저서 출판 기본기 기술 학습의 어려움 실무에 꼭 필요한 내용이 있음 어려운 내용을 쉽고 단순하게 만들어서 설명 가치 삶의 가치를 고민 나만의 성장 vs 업계 모두의 성장 다음 세대의 개발자를 성장시키는 것을 선택 많은 강의를 준비하신다… 설렌당.. 성장 기본기 - 기술, 비즈니스 기술 성장을 위해 어떤 기술을 배워야 하는가? 현재 팀에서 사용하는 기술 최신 유행 기술 3종류의 개발자 기술 공부를 안하는 개발자 → 기술을 이해하고 사용하는게 아님 기술적인 근본 원인을 파악하기 어려움 깊은 이해 없이 업무 반복 새로운 기술을 도입할 때 주.. 2023. 8. 19.
[인프콘 2023] 커뮤니케이션 잘하는 개발자의 4가지 습관 커뮤니케이션 잘하는 개발자의 4가지 습관 주제 다른 직군과의 요구사항 커뮤니케이션 좋은 개발자란 무엇일까? 함께 일하기 힘든 개발자 그거는 개발 구조상 안돼요… 그냥 안된다고 말한다 ⇒ 스펙 구현형 개발자. 스펙을 구현하는 게 본인의 일이라고 정의하기 때문. 구현에만 집중하면 일의 시야가 좁아진다. 상대방의 입장이나 문제를 고려하지 않게된다. 요구사항을 구체화하는건 디자이너나 기획자..? 커뮤니케이션을 잘하는 개발자 문제 해결형 개발자 안된다 라는 말을 그냥 하지 않는다. → 예스맨이라는 뜻이 아님 어떤 문제를 풀려고 하는지 묻는다. 대안을 제시한다. 의도한 맥락을 이해해서 더 좋은 스펙을 만들어내려고 한다. 고객과 사업의 문제를 풀 수 있느냐를 집중한다. 안된다고 말하지 않는 이유 → 문제 해결에 집중.. 2023. 8. 19.
웹 서버 개발자가 된 30대 비전공자의 면접 회고 및 앞으로의 계획 아직 아무런 커리어도 없는, 심지어 비전공자인, 가진건 열정뿐인(?) 제게, 감사하게도 잡 오퍼가 들어왔습니다. 드디어 10개월의 노력이 결실을 맺었네요. 너무 감동적인 순간이었습니다. 최종 합격과 동시에 여태 공부하느라 저를 갈아넣은 탓인지, 아니면 긴장을 너무 했던 탓인지, 편도염이 쎄게 와서 이 참에 일주일 간 푹 쉬어버렸습니다. 3월 6일부터 출근하기로 하였는데, 기대감 반 걱정 반입니다. 앞으로 어떻게 하면 개인적으로 잘 성장 해나갈 수 있을지, 또한 나를 믿고 오퍼를 준 회사에 어떠한 기여를 할 수 있게 될지, 앞으로의 계획과 목표를 정리 해보고자 합니다. 면접 회고 로켓 펀치 - 15건 지원, 전부 탈락 저는 스타트업에 가서 함께 성장하는 것이 목표였기 때문에, 초반에는 로켓펀치를 중심으로 .. 2023. 2. 18.