본문 바로가기
반응형

Spring57

[JPA] Hibernate 6.2.5.Final 공식 가이드 번역 (2) - System Requirements Hibernate ORM 6.2.5.Final User Guide 시스템 요구사항 (System Requirements) Hibernate 6.0 이상의 버전은 최소 Java 11과 JDBC 4.2가 필요합니다. 시작 안내서 새로운 사용자는 기본 정보와 튜토리얼을 제공하는 Hibernate 시작 안내서를 먼저 참고할 수 있습니다. 또한 다양한 주제에 대한 심층적인 안내서 시리즈도 있습니다. Hibernate를 사용하기 위해 SQL에 대한 강력한 배경지식은 필요하지 않지만, SQL 문으로 귀결되기 때문에 도움이 됩니다. 아마도 더 중요한 것은 데이터 모델링 원칙을 이해하는 것입니다. 다음 자료를 출발점으로 고려해 볼 수 있습니다: 데이터 모델링 위키백과 정의 데이터 모델링 101 트랜잭션과 유닛 오브 워크.. 2023. 6. 25.
[JPA] Hibernate 6.2.5.Final 공식 가이드 번역 (1) - Preface Hibernate ORM 6.2.5.Final User Guide 서문 (Preface) 객체지향 소프트웨어와 관계형 데이터베이스를 함께 사용하는 것은 불편하고 시간이 많이 소요될 수 있습니다. 데이터를 객체와 관계형 데이터베이스 간에 어떻게 표현하는지에 대한 패러다임 불일치로 인해 개발 비용이 상당히 증가합니다. Hibernate는 Java 환경에서 사용하는 객체/관계형 매핑 솔루션입니다. 객체/관계형 매핑이란 객체 모델 표현에서 관계형 데이터 모델 표현(그 반대도 포함)으로 데이터를 매핑하는 기술을 의미합니다. Hibernate는 Java 클래스를 데이터베이스 테이블에 매핑하는 것뿐만 아니라 Java 데이터 유형을 SQL 데이터 유형으로 변환하는 작업을 처리하며, 데이터 쿼리 및 검색 기능도 제공합니.. 2023. 6. 25.
[Spring] Spring Boot + Kotlin + Spring Data JPA 설정 주의 사항 이번 포스팅에선 Spring Boot + Kotlin + Spring Data JPA 사용할 때 설정해야 하는 것들에 대해 알아보겠다. Hibernate의 Entity 필수 조건 Hibernate 공식 사이트에 나와있는 Entity가 갖춰야 할 필수 조건에 대해 먼저 알아보자. Entity 클래스는 public, protected 또는 패키지 가시성을 가진 매개변수 없는 생성자를 가져야 합니다. 추가 생성자를 정의할 수도 있습니다. Entity 클래스는 최상위 클래스일 필요가 없습니다. Hibernate는 원칙적으로 final 클래스나 final 영속 상태 접근자(getter/setter) 메서드를 가진 클래스를 영속화할 수 있습니다. 그러나 이렇게 하는 것은 Hibernate가 엔티티를 lazy loa.. 2023. 6. 25.
[Spring] Spring Boot 테스트에 사용할 h2 DB 설정 방법 이번 포스팅에선 Spring Boot Test 돌릴 때 h2 DB를 사용하기 위한 설정 방법에 대해 알아보겠다. 사실 엄청 간단한데 매번 까먹어서 정리한다. 1. build.gradle.kts에 h2 DB 의존성 추가 testRuntimeOnly("com.h2database:h2") 2. application.yml에 h2 DB 접속 정보 추가 spring: datasource: url: jdbc:h2:mem:test username: sa password: driver-class-name: org.h2.Driver 2023. 6. 24.
[Spring] Bean Lazy Initialization 사용법 이번 포스팅에선 Spring의 Lazy initialization에 대해 알아보겠다. 먼저 Spring이 lazy initialization 설명한 글을 번역해보겠다. Lazy Initialization in Spring Boot 2.2 Lazy란 무엇을 의미하나요? Spring Framework는 11년 전 소스 코드가 Git으로 이동하기 전부터 lazy bean 초기화를 지원해왔습니다. 기본적으로 응용 프로그램 컨텍스트가 새로 고침될 때마다 컨텍스트의 모든 bean이 생성되고 해당 bean의 종속성이 주입됩니다. 그에 반해, lazy bean 정의가 구성된 경우 해당 bean은 필요할 때까지 생성되지 않고 종속성이 주입되지 않습니다. Lazy Initialization를 활성화하는 방법 Spring .. 2023. 6. 18.
[Spring] WebClient에서 204(no content), 빈 response body 다루기 이전 포스팅을 쓰다보니 WebClient에서 항상 http status를 204(no content)로 내려주는 api, 경우에 따라 response body를 빈 값으로 내려주는 api는 어떻게 다뤄야 하는지 궁금해졌다. 항상 http status를 204(no content)를 내려주는 api 다루기 (= 항상 빈 response body를 내려주는 api) http status 204는 기본으로 response body를 빈 값으로 리턴한다. 오 그럼 bodyToMono를 Unit으로 받으면 되는 거 아니야? 라고 생각했다. WebClient.create("ORDER_API") .delete() .uri("/order/$orderId") .retrieve() .bodyToMono(Unit::clas.. 2023. 4. 16.
[Spring] WebClient를 쓰기 전 반드시 알아야 하는 것 이번 포스팅에선 WebClient를 사용하다 황당한 일을 겪은 내용을 써보고자 합니다. 결론 결론부터 얘기하자면 WebClient로 호출한 api의 response body 값이 빈 값인 경우 Mono.empty()를 리턴한다. 문제 @Service class OrderDetailService { fun getOrderDetail(orderId: Long, userId: Long): Mono { return Mono.zip( getOrder(orderId), getUser(userId) ).map { OrderDetail.of(it.t1, it.t2) } } } fun getUser(userId: Long): Mono { return WebClient.create("USER_API") .get() .ur.. 2023. 4. 16.
[Spring] Spring Boot Gradle 프로젝트를 JAR 파일로 빌드하기 1. gradle bootJar 명령어를 실행하거나 오른쪽 Gradle에서 Tasks - bootJar 클릭 2. Project 탭에서 build - libs - xxx.jar 파일 찾기 끝! 2023. 2. 14.
[Spring] RestTemplate vs WebClient 어떤 걸 써야 할까? 문득 WebClient를 쓰다가 왜 RestTemplate을 안 쓰게 됐지? 라는 생각에 이유를 찾아봤다. spring 5 나올시기에 RestTemplate가 없어진다 뭐한다라는 루머가 많이 돌았는데 어떻게 된건지 알아보자. RestTemplate RestTemplate는 Spring 3.0 버전에 나온 Synchronous 클라이언트로 http 요청을 처리하기 위한 모듈이다. RestTemplate (Spring Framework 6.0.4 API) postForLocation Create a new resource by POSTing the given object to the URI template, and returns the value of the Location header. This heade.. 2023. 2. 14.
반응형