본문 바로가기

Java147

[JPA_Basic] N+1 문제 이 글은 김영한의 [자바 ORM 표준 JPA 프로그래밍 - 기본편]을 수강하며 정리한 글입니다. 👉 기본 환경 - Language: Java - DB: H2 Database - IDE: IntelliJ ⭐ N + 1 문제 : 연관관계가 설정된 엔티티 사이에서 하나의 엔티티를 조회했을 때, 조회된 엔티티의 개수(N 개)만큼 연관된 엔티티를 조회하기 위해 추가적인 쿼리가 발생하는 문제 - 1: 하나의 엔티티를 조회하기 위한 쿼리의 개수 - N: 연관된 데이터를 조회하기 위한 추가적인 쿼리의 개수 ⌨️ 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Entity public class Member extends BaseEntity { // 생략 @Id @Gen.. 2023. 9. 10.
[JPA_Basic] Proxy 이 글은 김영한의 [자바 ORM 표준 JPA 프로그래밍 - 기본편]을 수강하며 정리한 글입니다. 👉 기본 환경 - Language: Java - DB: H2 Database - IDE: IntelliJ ⭐ em.find();와 em.getReference(); em.find(): DB에서 실제 Enitty 객체 조회 em.getReference(): DB 조회를 미루는 Proxy Entity 객체 조회 ⭐ Proxy 객체 - 실제 클래스를 상속받아 만들어짐 - 프록시 객체는 실제 객체의 참조를 보관 - 프록시 객체 호출 시, 프록시 객체는 실제 객체의 메서드 호출 * Proxy 객체의 초기화: Proxy 객체의 Target Entity를 생성하는 과정 1. getName() 요청 2. Proxy 객체의 .. 2023. 9. 8.
[JPA_Basic] @MappedSuperclass 이 글은 김영한의 [자바 ORM 표준 JPA 프로그래밍 - 기본편]을 수강하며 정리한 글입니다. 👉 기본 환경 - Language: Java - DB: H2 Database - IDE: IntelliJ @MappedSuperclass - 주로 등록일, 수정일, 등록자, 수정자 같이 전체 엔티티에서 공통적으로 사용하는 정보를 모을 때 사용 📑 특징 - 상속관계 매핑 X - Entity가 아니므로, 테이블과 매핑되지 않음 ▶ 상속받는 자식 클래스에 매핑 정보만 제공 - 생성해서 사용할 일이 없으므로 abstract class로 사용 1. BaseEntity 생성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3.. 2023. 9. 5.
[해결 방법] org.gradle.api.GradleScriptException 👉 기본 환경 - Language: Java - DB: MySQL - IDE: IntelliJ ⌨️ 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 plugins { id 'java' } group = 'kr.co.project1' version = '1.0' repositories { mavenCentral() } dependencies { testImplementation platform('org.junit:junit-bom:5.9.1') testImplementation 'org.junit.jupiter:junit-jupiter' compile 'javax.servlet:servlet-api:2.5' compile 'org.spring.. 2023. 8. 27.
[SpringBoot] WebClient 👉 기본 환경 - Language: Java - DB: MySQL - IDE: IntelliJ WebClient - HTTP 클라이언트(서버에 API 요청을 보내는 주체) 라이브러리 - 비동기적으로 요청하는 non-blocking 처리 방식 ▶ 요청을 보내고 응답을 받을 때까지 대기하지 않기 때문에 처리 속도가 빠름 1. Dependency 추가 1 2 3 4 5 6 dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-webflux' // HTTP 클라이언트 라이브러리 } 2. WebClient 사용 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2.. 2023. 8. 23.
[SpringBoot] 스프링 부트 프로젝트 생성 👉 기본 환경 - Language: Java - DB: MySQL - IDE: IntelliJ 1. Spring Initializer에서 기본 설정 구축 https://start.spring.io/ - Project - Gradle - Groovy: 환경 설정 파일 build.gradle - Gradle - Kotlin: JVM에서 실행되는 다목적 프로그래밍 언어로, Java와 호환성이 뛰어남 - Maven: 환경 설정 파일 pom.xml - Spring Boot - SNAPSHOT: 실험 중인 버전 - 3.XX버전을 사용할 땐 JAVA 17 이상으로 사용 - Project Metadata - Group: 기업 도메인명 - Artifact : 빌드 결과물 - Name : 프로젝트명 (일반적으로 Artif.. 2023. 8. 23.