2022-03-07-TIL TIL Today I Learned Convert Entity to DTO 컨트롤러가 JPA 엔티티를 그대로 응답으로 내보내면 몇 가지 문제가 생긴다. 엔티티 필드가 바뀔 때마다 API 응답 형식이 함께 바뀌고, 지연 로딩(lazy loading) 연관 필드가 직렬화되면서 예상치 못한 쿼리나 예외가 생길 수 있으며, 노출하면 안 되는 필드까지 나갈 수 있... 2022/03/07 2022-TIL
2022-03-06-TIL TIL Today I Learned JPA vs MyBatis JPA는 객체와 테이블을 매핑해 두고 엔티티를 조작하면 SQL이 생성되는 ORM 표준이고, MyBatis는 개발자가 쓴 SQL의 파라미터와 결과를 객체에 매핑해 주는 SQL 매퍼다. JPA는 단순한 CRUD와 도메인 모델 중심 개발에서 반복 코드를 크게 줄여 주지만, 영속성 컨텍스트, 지연 로... 2022/03/06 2022-TIL
2022-03-03-TIL TIL Today I Learned DTO의 사용범위 정해진 규칙은 없지만 DTO는 컨트롤러에서 request, response의 용도로 사용하며, 서비스 계층으로 내려가는 dto의 경우 SomethingDto 정도로 네이밍 하면 좋을 것 같다. 즉, 컨트롤러에서만 사용하는 DTO와 서비스에서도 사용되는 DTO를 구분하는게 좋다. 레파지토리에서는 JPA... 2022/03/03 2022-TIL
2022-03-02-TIL TIL Today I Learned Spring Boot Admin Spring Boot Admin은 codecentric이 만든 오픈소스로, Spring Boot Actuator 엔드포인트를 웹 UI로 모아 보여 주는 관리 도구다. Admin 서버를 하나 띄우고 각 애플리케이션이 클라이언트로 등록하거나(또는 Eureka 같은 서비스 디스커버리로 찾게 하... 2022/03/02 2022-TIL
2022-03-01-TIL TIL Today I Learned Spring Cloud Feign Feign은 HTTP API 호출 코드를 인터페이스 선언만으로 만들어 주는 선언형 HTTP 클라이언트다. RestTemplate으로 URL을 조립하고 응답을 변환하는 코드를 매번 쓰는 대신, 인터페이스에 애너테이션을 붙이면 구현체가 런타임에 생성된다. Spring Cloud OpenF... 2022/03/01 2022-TIL
2022-02-27-TIL TIL Today I Learned MapStruct MapStruct는 DTO와 엔티티처럼 모양이 비슷한 객체 사이의 매핑 코드를 생성해 주는 자바 애너테이션 프로세서다. 매퍼 인터페이스에 매핑 메서드를 선언하면 컴파일 시점에 구현 클래스가 만들어진다. 레퍼런스 문서에 따르면 생성된 코드는 리플렉션 없이 일반 메서드 호출로 값을 옮기므로 빠르고, 매핑할... 2022/02/27 2022-TIL
2022-02-26-TIL TIL 2022-02-26-TIL Today I Learned 리액티브 프로그래밍 리액티브 프로세싱 먼저 리액티브 프로세싱이란, 개발자로 하여금 논블로킹, 비동기 애플리케이션을 빌드할 수 있게끔 하여, 해당 애플리케이션이 back-pressure를 다룰 수 있게 하는 것이다. (플로우 컨트롤) Back-pressure Back-pressure는 또... 2022/02/26 2022-TIL
2022-02-24-TIL TIL Today I Learned 특정 문자열로 시작하는 파일 지우기 가장 간단한 방법은 셸의 패턴 매칭(glob)을 쓰는 것이다. Bash 매뉴얼에 따르면 *는 빈 문자열을 포함한 아무 문자열에나 매칭된다. 패턴은 rm이 아니라 셸이 먼저 파일 이름 목록으로 펼친 뒤 rm에 넘긴다. ls report_* # 먼저 무엇이 지워질지 확인한다... 2022/02/24 2022-TIL
2022-02-23-TIL TIL Today I Learned JWT JSON 객체를 사용해서 토큰 자체에 정보를 저장하는 웹 토큰의 일종이다. 아주 간편하고 쉽게 적용할 수 있어서 몇 가지 고려사항만 잘 지키면 작은 프로젝트부터 대규모 프로젝트까지 잘 적용할 수 있다. RFC 7519는 JWT를 두 당사자 사이에 주고받을 클레임(claim)을 표현하는 간결하고 URL에 안전한 ... 2022/02/23 2022-TIL
2022-02-22-TIL TIL 2022-02-22-TIL Java 17 vs Kotlin 파이로는 자바17이 “기존의 자바와 호환도 잘 되면서 코틀린의 문법적 이득은 충분히 취할수 있도록 발전했다.”고 평가했다. 심지어 기존의 코프링 보다도 스프링과 궁합이 훨씬 잘 맞아서 코프링으로 돌아섰던 사람들 중 상당수가 다시 자바를 사용하지 않을까 하고 생각했다. https://... 2022/02/22 2022-TIL