본문 바로가기

반응형

전체 글

(65)
[하이버네이트 유저 가이드 파헤치기] 들어가며 - 0 들어가며 처음 개발자로 일을 시작한 시점(2017년)에는 mybatis라는 SQL Mapper를 사용해서 개발을 했었습니다. 아무래도, 당시에는 한국 IT 개발이 SI 중심으로 이루어져서 그런 것 같습니다. 그런데 최근 몇년간 IT 서비스를 개발하는 스타트업들이 많아지고 투자도 많아져서 그런지 JPA를 많이들 사용하기 시작한 것 같습니다. 많은 개발자들이 입사하고 싶어하는 네카라쿠배당토 같은 회사들에서 JPA를 적극적으로 사용하고 있기 때문에 그런지도 모르겠습니다. 아래 구글 트렌드를 보니, 확실히 JPA의 관심도가 꾸준히 올라갔고 최근에는 마이바티스와 거의 비등해지고 있는 것을 알 수 있습니다. 저는 개인 프로젝트에 JPA를 적용하기 시작해 실무에서 JPA를 사용한지 2년이 넘었습니다. 처음에는 김영한..
@DataJpaTest를 이용해 Lazy loading 테스트할 때 주의할 점 0. 들어가며 현재 JPA에서 일대일 연관관계 매핑에 대한 글을 적고 있다. 그래서 코드를 작성해서 테스트하는데. 내가 원하는 테스트 결과가 안 나와서 헤매다가 해법을 찾았다. 해법을 찾으면서 몰랐던 지식을 습득하기도 했다 그런데 돌이켜보니 2년전에 이미 문제를 겪어서 거기에 대한 조치를 취한 적도 있었다는 것을 알았다. 그래서 기록으로 남기려고 한다. 1. 문제 상황 아래는 이번에 문제가 생겼던 코드이다. 일단 엔티티 Post와 PostDetails의 관계는 일대일 연관관계로 Post가 연관관계의 주인으로 외래키를 가지고 있는 구조이다. @Entity class Post( @Id @GeneratedValue val id: Long? = null, var title: String? = null, @Col..
Querydsl을 사용하는 자바(JAVA) Spring Framework 프로젝트에 코틀린(Kotlin) 설정 1. QueryDSL이란? Spring Framework에서 JPA, QueryDsl 조합을 애용하고 있다. 특히, QueryDsl을 사용하면 SQL, JPQL을 type safe하게 작성할 수 있다. type safe하게 작성할 수 있다는 것은 IDE의 지원을 받아서 쉽고 안전하게 Query를 작성할 수 있다는 의미이다. 그리고 Spring Data JPA를 사용하면 다이나믹 쿼리를 사용할 수 없어서 코드가 장황해지고 중복되는데. QueryDsl는 다이나믹 쿼리를 작성가능해서 반복되는 코드수를 줄일 수 있다. 2. 자바(Java)를 사용하는 Spring data jpa project에서 QueryDsl 설정 QueryDsl을 사용하려면 컴파일(Compile)시에 QClass를 생성하기 위한 설정을 해야..
코틀린(Kotlin)으로 스프링 시큐리티(Spring Security) 유저 정보 조회 코틀린(Kotlin)으로 스프링 시큐리티(Spring Security) 유저 정보 조회 들어가며 코틀린(Kotlin)을 회사 웹 서비스에 도입하기 위해 공부하고 있다. Kotlin으로 Spring Boot Security - Login 맛보기 라는 글을 참고해 로그인 부분을 구현했다. 훌륭한 글이지만 실무에서 사용할 만한 기능의 예시는 없어서 내가 테스트해보고 글을 적는다. 본 글에서 다루는 내용 UserDetails를 구현해서 필요한 유저 정보를 로그인 시 SecurityContext에 저장하기 저장한 유저 정보를 SecurityContextHolder로 조회 유저 정보를 불러오는 코틀린 함수 정의(JAVA의 유틸 클래스(Util Class)를 대체) JAVA에서 코틀린 함수를 호출 코틀린의 안전한 캐..
코틀린(Kotlin) data class를 JPA에서 사용시 주의할 점 코틀린(Kotlin) data class를 JPA에서 사용시 주의할 점 들어가며 코틀린(Kotlin)을 회사 웹 서비스에 도입하기 위해 공부하던 중 kotlin의 data class를 spring data jpa에서 사용시 주의할 점을 알게 되었다. data class란 무엇인가? lombok에서 사용하는 @Data 어노테이션과 비슷한 기능을 코틀린(Kotlin) 언어 자체에서 지원한다고 보면 된다. 지원 기능은 대표적으로 아래와 같다. equals() / hashCode() 자동 선언 toString() 자동 선언 copy() 함수 구현 반복되는 코드 구현을 줄여주는 좋은 기능이다. 실제로 웹상의 많은 예제에서 data class의 장점으로 spring data jpa의 entity를 예시로 들었다. ..
일체형 아키텍처(monolithic architecture) 분리하기(Hystrix 도입기) - 2 일체형 아키텍처 분리하기(Hystrix 도입기) - 2 Circuit breaker(Hystrix) 도입기 개인 프로젝트를 MSA로 변환하면서 의존성을 가지는 컴포넌트에 대해서 Hystrix라는 라이브러리로 Circuit breaker patten을 적용했다. 그런데 필자가 이 패턴에 대해서 이해가 낮아서 시행착오를 겪었다. 그 과정을 이 글에서 소개해보고자 한다. Hystrix와의 잘못된 만남 처음 histrix를 유저 로그 기록하는 서버에 도입했다. 유저가 특정 컨텐츠를 검색하면 accessToken과 검색 조건을 유저 로그 서버가 받아서 accessToken은 인증 서버로 보내서 인증 후 User Id를 응답받는 부분이 있었기 때문이다. Hystrix의 존재를 알고 있고 Spring에 도입하는 설정..
두번 째 회사에 들어가며 두번 째 회사에 들어가며 0. 내가 백수가 된 이유 작년 8월 갑작스럽게 백수가 됐다. 다니던 회사의 투자금이 다 떨어져간다는 것은 느끼고 있었다. 대표님이 IR을 자주 다녔고 꽤 큰 금액을 다른 업체에 제휴를 위해서 투자 했었기 때문이다. 그래도 2018년까지는 버틸 수 있을 것이라고 느꼈다. 그러나 그 날은 갑자기 왔다. 여느때와 같은 월요일이라서 모든 멤버들이 한주의 일정을 공유하는 시간이라고 생각했다. 그러나 대표님은 이제 사업은 지속할 수 없게 되었고 내가 부족해서 이렇게 되서 미안하다고 말씀하셨던 것같다. 순간 멍해졌다. 핫플레이스 검색이라는 기능을 새로 개발하는 과정에서 이제 나도 주도적으로 개발을 할 수 있겠다는 자신감이 생긴 시점이었다. 그리고 우리 팀과 서비스를 너무 좋아했었기 때문이다..
일체형 아키텍처(monolithic architecture) 분리하기 - 1 일체형 아키텍처(monolithic architecture) 분리하기 - 1 세 가지 형태의 서버 구조 개인프로젝트에서 사용자 로그를 저장하고 조회하는 기능을 기존의 리소스 서버에서 분리했다. 수정 이전의 리소스 서버는 아동 컨텐츠 검색 기능과 사용자의 컨텐츠 조회 사항을 기록하고 메인페이지에 최근에 조회한 컨텐츠를 제공하는 역할을 함께 해주었다. 이번에 사용자의 검색 조건을 사용자 로그로 저장을 하는 기능을 추가하면서 리소스 서버에서 유저 로그와 관련된기능을 분리했다. 이번 글에서는 세가지 서버의 구조를 볼 것이다. 관계형 데이터베이스에서 모든 기능을 처리하는 일체형 아키텍처 사용자 로그용 저장소를 추가한 일체형 아키텍처 사용자 로그만을 다루는 마이크로서비스 아키텍처 점점 개선되는 구조를 보면서 마이크..

반응형