스프링 부트와 JPA 활용4
강의 : 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 4. 컬렉션 조회 최적화 주문내역에서 추가로 주문한 상품 정보를 추가로 조회한다. Order에서 컬렉션으로 참조하는 OrderItem과 Item이 필요하다. 이전 문서의 “3. 지연 로딩과 조회 성능 최적화”에선 OneToOne, ManyToOne 관계만 있었다. 이번에...
강의 : 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 4. 컬렉션 조회 최적화 주문내역에서 추가로 주문한 상품 정보를 추가로 조회한다. Order에서 컬렉션으로 참조하는 OrderItem과 Item이 필요하다. 이전 문서의 “3. 지연 로딩과 조회 성능 최적화”에선 OneToOne, ManyToOne 관계만 있었다. 이번에...
강의 : 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 1. Rest API 요청을 받기 위한 별도의 DTO를 만든다. 실무에서는 API 파라미터로 엔티티를 사용하거나 외부에 노출하면 안된다. 엔티티에 @NotEmpty 같은 API 검증을 위한 로직이 들어가면, 엔티티에 프레젠테이션 계층을 위한 로직이 추가된다. 실무에서...
강의 : 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 질문 11. DAO를 사용할 때 장점을 트랜잭션 스크립트 구조 개발했을 때와 비교해서 설명해 줘 DAO 패턴과 트랜잭션 스크립트 패턴은 둘 다 실제 서비스 로직을 구성할 때 쓰이지만, 관심사의 분리 수준, 코드 조직 방식, 유지보수성 등에서 차이가 있어요. ✅ 비교 대상 ...
강의 : 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 질문 1. JPA 연관관계 매핑 분석에서 연관관계의 주인을 정해야 하는 이유가 뭐야? JPA 연관관계 매핑에서 연관관계의 주인을 정하는 이유는 데이터베이스에 저장될 외래 키(Foreign Key)를 어느 엔티티가 관리할지를 명확히 하기 위해서입니다. 이는 일대다, 다대일, 일...
책 : 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 질문 1. 쿠버네티스에서 호스트 전용 네트워크는 뭐야? 쿠버네티스에서 “호스트 전용 네트워크”는 파드(Pod)가 노드의 네트워크 네임스페이스를 공유하는 네트워크 모드를 의미합니다. 이는 파드가 노드의 IP 주소를 사용하고, 노드의 네트워크 인터페이스를 통해 직접 통신할 수 있음을 의미합니...
책 : 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 명령어 1. nginx pod 배포 kubectl run nginx --image=nginx 2. pod 확인 kubectl get pod 3. 배포한 pod의 ip 확인 kubectl get pod -o wide 4. 외부에서 pod에 접근하기 위해 NodePor...
강의 : 김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍 1. 디폴트 메서드 1-1. 디폴트 메서드 소개 자바는 처음부터 인터페이스와 구현을 명확하게 분리한 언어였다. 인터페이스는 구현없이 메서드의 시그니처만을 정의하는 용도로 사용 되었다. 인터페이스 목적: 코드의 계약을 정의하고 클래스가 어떤 메서드를 반드시 구현하...
강의 : 김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍 1. Optional이 필요한 이유 1-1. NullPointerException 문제 null 참조에 대해 메서드를 호출하면 NullPointerException이 발생해 프로그램이 예기치 않게 종료될 수 있다. null 체크를 하기 위해 if (obj != nu...
강의 : 김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍 1. 스트림 API - 기본 1-1. 스트림 API 시작 map, filter 기능을 제공하는 MyStreamV3을 만들어 List Collection에 원하는 연산을 선언적으로 구현할 수 있게 지원했다. MyStreamV3을 사용해 작업을 어떻게 수행해야 하는...
강의 : 김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍 1. 람다가 필요한 이유 아래와 같이 주사위 값을 무작위로 구하고 값을 더하는 동작의 실행 시간 측정하는 코드가 있다. public class Ex1Main { private static void helloDice() { long startNs =...