
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 이미지 다운로드//..

사용 툴은 DBeaver 커넥션 세팅에서 SSH 탭에 bastion 정보를 넣어준다.test tunnel config를 눌러서 우선 베스천 서버에 잘 접속되는지 확인. 이후 main으로 돌아와 기본적인 DB정보를 넣어주면 베스천을 통해 vpc 내부에 접속하게되고 그 뒤에 private db에 접근이 가능한 구조다. 출처: likegirl.tistory.com/3 window에서 접근하고싶다면 Windows PowerShell에서 ssh -i privateKey ec2-user@공인ip(탄력적ip) -p22 ex) ssh -i privateKey.pem ec2-user@15.201.49.77 -p22 식으로 접근할 수도 있다.

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..

페치 조인 @Entity public class Member { 중략.. @ManyToOne(fetch = FetchType.LAZY) //Member, Team 관계를 나타내는 다:1(N:1) @JoinColumn(name = "TEAM_ID") private Team team; } Member 조회 때 여러 연관관계가 걸릴 수 있는데 그냥 매핑을 할 경우 모든 테이블에 join이 걸리므로 성능이 떨어지는걸 막고자 연관관계 매핑 시 Lazy 로딩을 사용하게 된다. 그러면 Team을 바로 join하지 않고 프록시 상태로 갖고 있다가 값을 참조하는 순간에 select 쿼리가 발생된다. 그런데 아래와 같이 사용할 경우 최악의 성능이 생길 수 있다. Team teamA = new Team(); teamA.se..