
의존성 추가dependencies { implementation("org.springframework.boot:spring-boot-starter-batch") implementation("org.springframework.boot:spring-boot-starter-data-jpa") // JPA 사용 시 runtimeOnly("org.postgresql:postgresql") // 데이터베이스에 따라 변경}application.ymlspring: // DB 정보는 알아서 적당히 바꾸시길 datasource: url: jdbc:postgresql://localhost:5432/mydb username: myuser password: mypassword driv..

간단하고 담백하게 설정 방법을 작성하려고 합니다.의존성추가// Swaggerimplementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.5")application.ymlspringdoc: swagger-ui: path: /docs // 경로 커스텀 disable-swagger-default-url: true api-docs: path: /api-docsSwagger Configimport io.swagger.v3.oas.models.OpenAPI;import io.swagger.v3.oas.models.info.Info;import org.springframework.context.annotation.Bean;impor..

build.gradle.ktsplugins { java id("org.springframework.boot") version "3.4.2" id("io.spring.dependency-management") version "1.1.7"}java { toolchain { languageVersion = JavaLanguageVersion.of(21) }}repositories { mavenCentral()}dependencies { // Querydsl 추가 implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta") annotationProcessor("com.querydsl:querydsl-apt:5.0.0:jakarta") annotationProcesso..

1. Docker 설치아래의 홈페이지로 가서 설치, 혹시 에러가 난다면 BIOS에서 가상머신이 켜져 있는지 확인하자!https://www.docker.com/products/docker-desktop/ Docker Desktop: The #1 Containerization Tool for Developers | DockerDocker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.www.docker.com필자는 AMD의 SVM을 못찾아서 1시간을 삽질을..ㅠ 2. Mysql Docker 이미지 다운로드//..

Helm이란? helm은 deployment, service, ingress 등 yaml 파일들을 하나의 package로 관리하기 위한 도구이다. 기본적으로 배포한 애플리케이션을 삭제하기 위해선 deployment.yaml, service.yaml, ingress.yaml를 각각 삭제 해줘야 하지만 helm을 사용하면 설치와 삭제가 모두 한 번에 가능하다. 주요 개념 3가지 Chart: helm package에 해당하는 부분으로, 이 패키지에는 쿠버네티스 클러스터 내에서 애플리케이션, 툴, 서비스 등 구동에 필요한 모든 리소스가 정의되어 있다. 즉 설치 스크립트라고 볼 수 있다. Repository: Chart를 모아두고 공유하는 공간이다. Release: 쿠버네티스 클러스터에서 구동되는 Chart의 인..

JPA의 데이터 타입 분류 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 종류로는 기본값 타입, 임베디드 타입, 컬렉션 값 타입이 존재 기본값 타입 String name, int age 등 이며, 생명주기를 엔티티의 의존한다. (회원을 삭제하면 이름, 나이도 함께 삭제됨) 값 타입은 공유하면 안된다. 회원 이름 변경 시 다른 회원의 이름도 함께 변경되면 안됨 자바의 기본 타입은 절대 공유가 안된..

프록시 기초 em.find() : 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시)엔티티 객체 조회 em.getReference()로 가져온 member의 getClass를 해볼 경우 Member가 아닌 Member@DFnadjwProxy 식으로 매핑이 되어 있다. 값 또한 null로 아직 아무것도 없는 상태다. 이럴때 값에 접근하려고 getName() 해면 그때 영속성 컨텍스트에 초기화를 요청하여 DB에서 객체를 생성한다. 특이한 점은 바로 객체를 리턴하지 않고 연결만 시켜줘서 값을 읽어 온다는 점이다. 즉, getName()을 하더라도 class는 Member가 아니라는 점이다. 프록시의 특징 프록시 객체는 처음 사용할 때 한 번..
벌크 연산 쿼리 한 번으로 여러 테이블 로우 변경(엔티티) executeUpdate()의 결과는 영향받은 엔티티 수 반환 update, delete 지원 insert(insert into .. select, 하이버네이트 지원) String qlString = "update Product p" + "set p.price = p.price * 1.1 " + "where p.stockAmount < :stockAmount"; int rsCnt = em.createQuery(qlString) .setParameter("stockAmount", 10) .executeUpdate(); int rsCnt = em.createQuery("update Member m set m.age = 20") .executeUpda..