분류 전체보기

Spring/이론

[JPA] 준영속 엔티티란? 더티체킹이란?

준영속 엔티티란? 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. 영속 상태로 DB에 저장된 적이 있는, 식별자가 기존재하는 엔티티이다. Book book = new Book(); book.setId(param.getId()); 여기서 book은 새로운 객체이다. 하지만 기존의 식별자를 가지고 있다. 이러한 경우에는 준영속 엔티티로 볼 수 있다. 준영속 엔티티는 JPA가 관리를 하지않아 객체 내의 값을 수정해도 DB에 업데이트가 일어나지 않는다. 준영속 엔티티를 수정하는 방법 그러면 이미 영속성이 끊어진 준영속 엔티티로 어떻게 DB에 업데이트를 일으킬 수 있을까? 변경 감지 기능 (Dirty Checking) 사용 병합 (merge) 사용 변경 감지 기능 사용 @Transactional void ..

Spring/이론

동적 쿼리 VS 정적 쿼리 차이, 예시

정적 쿼리: 항상 동일한 쿼리 동적 쿼리: 조건에 따라 달라지는 쿼리 정적 쿼리 예시: (쿼리가 일정하다) SELECT * FROM MEMBER WHERE ID = 1016 동적 쿼리 예시: (조건에 따라 쿼리가 바뀐다) SELECT * FROM MEMBER WHERE IF (ID = 1016) THEN ID = 1016 ELSE ID = 0224 END IF; 이 경우를 보면 (문법은 살짝쿵 무시해주자) ID가 1016일 경우의 쿼리는 SELECT * FROM MEMBER WHERE ID = 1016 ID가 1016이 아닐 경우의 쿼리는 SELECT * FROM MEMBER WHERE ID = 0224 이렇게 된다. 조건에 따라 동적으로 쿼리가 변하는 것이다.

DevOps/AWS

[AWS] 인스턴스 생성

회원가입을 한 후에 EC2 메뉴에 들어간다. 인스턴스 시작을 누른다. OS로 무엇을 고를까 고민을 많이 했다. 특히 AMI 와 Ubuntu 중에 고민을 했는데 그 이유는 다음과 같다. 1. 리눅스라고 해서 2. 전에 작업했던 서버가 우분투 기반이어서 (살짝 익숙) 이번엔 아마존 리눅스를 써보고 싶은 생각에 고른 것도 있다. 서버 단에 아직 완전히 딥한 이해는 없어 완벽하게는 모르겠지만 아마존 리눅스는 레드햇이 개발하는 상업용 리눅스 배포판인 RHEL의 소스를 가져다 쓴 CentOS와 큰 차이가 없다고 한다. 그리고 aws 서비스 관련된 툴이 잘 되어있다고 하고 나는 프리티어만 사용할 것이기 때문에 등의 이유로 아마존 리눅스를 선택했다. 프리티어 인스턴스 유형 선택한 다음 키 페어를 생성해준다. 다시 발급..

Spring/이론

[JPA] JPQL fetch join 페치 조인

페치 조인은 중요하다고 소문이 자자하다. 대체 어떤 면이 좋길래 그렇게 중요하다고 하는지 알아보자. 페치 조인이란? JPQL에서 성능 최적화를 위해 따로 제공하는 기능이다. 연관된 엔티티나 컬렉션을 한번의 SQL로 조회하는 기능이다. SQL의 조인 종류 중 하나는 아니다. [JPQL] select m from Member m join fetch m.team [SQL] SELECT M.*, T.* FROM MEMBER M INNER JOIN TEAM T ON M.TEAM_ID=T.ID 엔티티 페치 조인 = 다대일 관계의 페치 조인 컬렉션 페치 조인 = 일대다 관계의 페치 조인 이 경우에는 위 사진처럼 하나의 팀에 여러 멤버 ROW가 들어가기 때문에 팀이 두번 조회되어 저장된다. 이는 쿼리 결과로 보면 같은..

Spring/이론

[JPA] JPQL 경로 표현식

경로 표현식은 정말 어려웠다. 단일 값이랑 컬렉션 값이 뭐가 다른지도 이해가 잘 안됐다. 이에 내가 이해한 내용을 바탕으로 나의 언어로 정리해 남기겠다. 경로 표현식이라고 말은 거창하지만 실상은 Java 개발자라면 당연히 써봤을 .(점)이다. 점 찍고 하위로 들어가는걸 그냥 어려운 말로 경로 표현식이라고 말한다. select m.username -> 상태 필드 from Member m join m.team t -> 단일 값 연관 필드 join m.orders o -> 컬렉션 값 연관 필드 where t.name = '팀A' 상태 필드 : 단순 값 저장하는 필드 (m.username) 경로 탐색의 끝, 더 이상 하위로 탐색하지 않음. 연관 필드 : 연관 관계를 위한 필드 단일 값: 다대일 관계의 엔티티 (..

DevOps/AWS

[AWS] AWS S3 프리티어 생성

가난한 학도로써 프리티어 이외의 요금은 언제나 두렵다. 무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어 Q: AWS 프리 티어란 무엇입니까? AWS 프리 티어는 고객에게 서비스별로 지정된 한도 내에서 무료로 AWS 서비스를 살펴보고 사용해 볼 수 있는 기능을 제공합니다. 프리 티어는 12개월 프리 티어, 상 aws.amazon.com 이 url에서 보니 S3는 1년 한정 5GB 무료다. 유의해서 사용하도록 하자. (과금되기 싫은 사람들은 1년 지나면 꼭 해지할 것) S3란 무엇이며 왜 사용하는 것일까? S3는 Simple Storage Service의 약자로 주로 파일 서버로 사용된다. 확장성 파일 서버는 트래픽이 증가함에 따라 서버 인프라 및 용량 계획을 변경해야 하는데 S3가 확장 및 성능 부분을 ..

DevOps/AWS

[AWS] AWS Budget 예산 제한 설정하기

기존에 프로젝트할 때 aws budget 설정 제대로 안해놨다가 돈쭐난 적이 있다. 이번에는 이를 미연에 방지하기 위해 예산 제한을 미리 걸어두려 한다. 예산 제한은 결제를 못하게 막아버리는 기능이 아닌(자기들도 먹고 살아야 겠죠) 일정 금액이 넘으면 알림이 오는 기능이다. 그래도 없는 것 보다는 훨씬 나으니 요금 폭탄 맞지말고 반드시 설정해주도록 하자. 먼저 프로필을 눌러주고 결제 대시보드를 누른다. 왼쪽 메뉴에서 Budgets 메뉴를 눌러주고 예산 생성 버튼을 누른다. 말도 안되게 편해진 설정이다. 프리티어만 먹튀하려는 사용자가 많아지니 제로 지출 예산이라는게 따로 생겼나보다. 위 설정에서 유의할 점은 이메일 수신자(4번 항목)에 꼭 이메일을 기입하길 바란다. 프리티어 외에 과금을 실수로 했을 시 메..

Spring/이론

[JPA] JPQL 문법과 기능

JPQL이란? JPA가 제공하는 SQL을 추상화한 객체 지향 쿼리 언어 SQL을 추상화했기 때문에 특정 데이터베이스 SQL에 의존하지 않는다. JPQL은 결국 SQL로 변환된다. JPQL과 SQL의 차이점 JPQL은 엔티티 객체를 대상으로 쿼리문이 짜여진다. SQL은 데이터베이스 테이블을 대상으로 쿼리문이 짜여진다. JPA가 제공하는 다양한 쿼리 방법 JPQL JPA Criteria 자바코드로 JPQL 작성 가능 JPQL 빌더 역할 JPA의 공식 기능 복잡하고 실용성이 없음. -> 코드가 너무 길어짐 QueryDSL 사용 권장 QueryDSL 자바코드로 JPQL 작성 가능 JPQL 빌더 역할 컴파일 시점에 문법 오류를 찾을 수 있음 동적쿼리 작성이 편리함 단순하고 쉬움 실무 사용 권장 네이티브 SQL S..

레이튼
'분류 전체보기' 카테고리의 글 목록 (3 Page)