JPQL Projection
·
📦 Database/JPQL
💡 프로젝션 Select에 조회할 대상을 지정하는 것이다. 프로젝션의 대상은 엔티티, 임베디드 타입, 스칼라 타입(숫자, 문자 등 기본 데이터 타입)이다. 프로젝션 조회 대상은 전부 영속성 컨텍스트의 관리 대상이다. 엔티티 프로젝션(멤버 조회) SELECT m FROM Member m ... 결과는 멤버가 조회된다. 엔티티 프로젝션(멤버 안에 있는 팀 조회) SELECT m.team FROM Member m ... 결과는 멤버가 아닌 멤버의 팀이 결과로 조회된다. List result = em.createQuery("select m.team from Member m", Team.class) .getResultList(); // --- 쿼리 튜닝의 편리함을 위해 명시적 Join 형식으로 Join을 하는걸 ..
JPQL Type Query & Sub Query
·
📦 Database/JPQL
💡 TypeQuery & Query TypeQuery 반환 타입이 명확할 때 사용 Query 반환 타입이 명확하지 않을 때 사용 // Member 타입, 명확한 반환 타입 TypedQuery query = em.createQuery("SELECT m FROM member m", Member.class); // String, int 2가지의 명확하지 않은 반환 타입 Query query = em.createQuery("SELECT m.username, m.age from Member m"); 💡 JPA Sub Query 쿼리 안에 서브 쿼리 작성 JPA 서브 쿼리의 한계 JPA는 WHERE, HAVING 에서만 서브 쿼리 사용 가능 SELECT도 가능 (Hibernate에서 지원) FROM의 서브 쿼리는 ..
JPQL Basic
·
📦 Database/JPQL
💡 JPQL 객체지향 쿼리 다양한 쿼리 지원 JPQL JPA Criteria QueryDSL 동적 쿼리 생성의 편리함 실무 사용 권장 Native SQL JPQL로 해결할 수 없는 DB 의존적인 기능을 사용할 때 ex: Oracle CONNECT BY, SQL HINT createNativeQuery() 사용 JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 영속성 컨텍스트를 적잘한 시점에 강제로 flush가 필요하다. ex: JPA를 우회해서 SQL을 실행하기 직전 수동 flush JPA를 사용하면서 JDBC 커넥션을 직접 사용하거나, JDBC Template, MyBatis 등 혼용 가능 소개 Java Persistence Query Language 가장 단순한..
Kotlin - Exception
·
📘 Backend/Kotlin
💡 코틀린에서 예외를 다루는법 목차 Try Catch Finally Checked & Unchecked Exception Try With Resource 💡 Try Catch Finally Try-Catch-Finally 문법은 자바,코틀린이 둘 다 동일하며, 코틀린에선 Expression이다. 코틀린에서 try-catch는 Expression이기 떄문에 return이나 변수의 값에 바로 할당이 가능하다 주어진 문자열을 정수로 변경하는 예시 // Java private int parseIntOrThrow(@NotNull String str) { try { return Integer.parseInt(str); } catch (NumberFormatException e) { throw new IllegalA..
[CI & CD - AWS] 5 - Automated Deployment
·
⚙️ Ops/CI & CD
💡 Automated Deployment 배포 파이프라인을 구성하는 단계(stage)와 작업(actions) Source단계 : 원격 저장소에 관리되고 있는 소스 코드에 변경이 생길 경우, 감지하고 다음 단계로 전달 Build단계 : 소스단계에서 받은 코드 컴파일 빌드 테스트 -> 가공 -> 결과물 전달 Deploy단계 : 전달받은 결과물을 실제 서비스에 반영 * 실제 단계와 과정은 상황에 따라 세분화 & 간소화 AWS Development Tool CodeCommit Source단계 구성 시 사용하며, 버전 관리 도구이다 보안에 강점 FreeTier이상 사용시 과금 CodeBuild Build 단계 구성 시 사용하며, 유닛 테스트 & 컴파일 & 빌드 작업을 CLI를 통해 실행 CodeDeploy Dep..