본문 바로가기

Spring

(12)
[Spring] 변경 감지와 병합(merge) 변경 감지와 병합 📍 준영속 엔티티 영속성 컨텍스트가 더이상 관리하지 않는 엔티티 jpa가 관리하고 있지 않음 준영속 엔티티를 수정하는 방법 변경 감지 기능 사용 병합(merge) 사용 아래 예제를 통해 위의 방법을 적용해보면, 📍 상품 수정 코드 Controller @PostMapping("items/{itemId}/edit") public String updateItem(@PathVariable("itemId") Long itemId, @ModelAttribute("form") BookForm form) { Book book = new Book(); book.setId(form.getId()); book.setName(form.getName()); book.setPrice(form.getPrice()..
[Spring] AWS + Docker 이용해 서버 배포하기 도커를 사용한 서버 배포 ⚙️ 개발 환경 도커는 이미 깔려 있는 상태 (Mac OS) AWS EC2도 Amazone Linux 2 Spring boot Java 17 Gradle 📍 도커 파일 생성 Dockerfile FROM openjdk:17-alpine ARG JAR_FILE=/build/libs/sejongmate-0.0.1-SNAPSHOT.jar COPY ${JAR_FILE} /sejongmate.jar ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod", "/sejongmate.jar"] open jdk java17 버전의 환경 구성 build 되는 시점에 JAR_FILE 경로에 jar 파일 생성 JAR_FILE을 sejongmate.jar에..
[Spring CICD] AWS + Docker + Github Action 이용해 서버 자동배포하기 AWS + Docker + Github Action 사용한 서버 자동배포 [Spring CICD] ⚙️ 개발 환경 Docker AWS EC2 Amazone Linux 2 Github Action Spring boot Java 17 Gradle 📍 AWS EC2 인스턴스 생성하기 Amazone Linux 이미지를 프리티어로 사용함 키페어 생성해서 저장해놓기 (지워버리지 않도록 유의하기) 그 외에는 스토리지만 20GB로 변경하고 인스턴스 생성함 이후 보안 그룹 설정해주기 (개발 시 다른 개발자도 접근 가능하도록 모든 위치에서 접근 가능하도록 설정함) 📍 AWS EC2 인스턴스에 도커 설치하기 키페어가 있는 폴더 내부에서 아래의 명령어를 통해 ssh 접속 ssh -i "키페어 파일이름" "퍼블릭 DNS 주소"..
[Spring] jpa entity 설계 시 주의점 1. 엔티티에는 가급적 Setter를 사용하지 말자 => Setter가 모두 열려있는 경우, 변경 포인트가 너무 많아서 유지보수가 어려움 2. 모든 연관관계는 지연로딩(LAZY)으로 설정하자 => 즉시 로딩(EAGER)은 조회 시점에 FK로 연결되어 있는 테이블 정보까지 모두 조회되기 때문에 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어려움 (JPQL 실행시 1 + N(FK 테이블) 문제 발생) => 연관된 엔티티를 조회해야 한다면, fetch join 또는 엔티티 그래프 기능 사용 => @OneToOne, @ManyToOne 관계는 기본이 즉시로딩이므로 직접 지연로딩으로 설정해야함 3. 컬렉션은 필드에서 초기화하자 => 컬렉션은 필드에서 바로 초기화 하는 것이 안전하다. => null pointe..