본문 바로가기
728x90

전체 글158

[JPA] JPQL 1 - 기본 문법 정리 객체 지향 쿼리 언어 JPQL 이란 JPA에서는 다양한 쿼리 방식을 지원한다. JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용, MyBatis, SpringJdbcTemplate을 JPA와 같이 사용 앞서 배웠던 엔티티 조회 방식은 Entity manager의 find method 호출을 통한 조회 혹은 객체 그래프 탐색(ex entityA.getB())을 통한 entity 조회였다. 하지만, 조건을 포함한 검색 쿼리 같은 경우는 앞서 사용한 방식으로는 해결이 불가능하다. JPA를 사용하는 경우 엔티티 객체를 중심으로 개발을 할 수 있게 되지만, 결국 애플리케이션에서 필요한 데이터만 조회하기 위해서는 SQL의 도움이 필요하다. JPQL 이러한 문제를 해결하기 위.. 2023. 2. 22.
SELECT query가 실행되는 과정 들어가면서.. 오늘은 database에서 데이터를 조회하기 위한 기본적인 방법인 SELECT query에서 데이터를 조회하는 과정을 단계별로 살펴보려고 합니다. SELECT query에 포함되는 where, group by, having, order by 절과 같은 구문들을 실행하는 순서가 정해져 있고, 이에 따라서 성능이 좌우되는 경우도 많기 때문에, 매우 중요한 개념입니다. SELECT query 기본 구성 요소 우선 select query에 포함되는 모든 clause를 표현하면, 다음과 같이 정리됩니다. SELECT FROM WHERE GROUP BY HAVING ORDER BY ; 총 6단계(select, from, where, group by, having, order by)로 구성된 과정을 거.. 2023. 2. 21.
[JPA] 값 타입 기본값 타입 JPA의 기본적인 데이터 타입 분류는 크게 두가지이다. (최상위 분류) 엔티티 타입 @Entity 어노테이션으로 정의하는 객체 데이터가 변해도 식별자를 이용해서 지속적으로 추적 가능 예) 회원 엔티티의 키나 이름 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 의미 식별자 없고 값만 있어 변경시 추적이 불가능하다. 예) 숫자 100 → 200 변경하면, 완전히 다른 값으로 대체된 것 값 타입 분류 기본값 타입 자바 기본 타입 (int, double ...) Wrapper class (Integer, Double ...) String 임베디드 타입 (embedded type, 복합 값 타입) 컬렉션 값 타입.. 2023. 2. 18.
Spring 프로젝트에 CORS 적용하기 들어가면서.. 이번에 진행하는 프로젝트가 처음으로 프론트 파트와 백엔드 파트를 분리해서 개발하는 방식이고, 저는 이 중 백엔드 파트의 WAS를 spring framework를 이용해 개발하는 파트를 담당하게 되었습니다. CORS에 대한 개념 정리 공부하게된 이유... 이번에 프로젝트를 진행하면서, 처음으로 프론트엔드 파트와 백엔드 파트를 나누어 개발을 진행하게 되었는데 배포 방식에 대해 이야기 하던 도중 프론트 서버와 백 서버를 kkkdh.tistory.com 그래서 이번에는 지난 글에서 정리했던 SOP와 CORS에 대한 개념을 바탕으로 클라이언트 측에서 오는 교차 출처 차원 허용에 대한 부분을 처리하게 되었고, 이번 글에서는 이 과정을 간단하게 기록해보려고 합니다! CORS 허용하는 출처 등록하는 방법.. 2023. 2. 15.
[JPA] 프록시 프록시 기능을 구현하는 과정에서 DB에서 가져오고 싶은 정보의 범위가 비지니스 로직에 따라 다르기 마련이다. 예를 들어 Member와 Team이라는 두 개의 entity가 연관관계 상에 있을 때, 구현 목적에 따라 두 개의 데이터가 한번에 조회되는 것이 좋을수도 있고, 그렇지 않을수도 있다. 이러한 상황을 JPA는 프록시와 지연로딩이라는 개념으로 기가막히게(?) 해결해준다고 한다. 먼저 프록시의 개념은 다음과 같다. 프록시 기초 em.find(): 앞서 살펴본 데이터베이스를 통해 실제 엔티티 객체를 조회하는 메서드 em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체를 조회하는 메서드 기존에 알던 EntityManager의 find method 말고, getReferen.. 2023. 2. 15.
트랜잭션(Transaction)의 특징(ACID)을 포함한 여러 가지 동시성 관련 개념 정리 들어가면서.. 😁 이번에 wanted에서 진행하는 2023년 2월 백엔드 프리온보딩 챌린지 과정에서 "MySQL 잘 사용하기"라는 주제를 공부하게 되었습니다! 사실 작년 4학년 2학기때 데이터베이스 설계 및 시각화 과목에서 다루었던 내용들이긴 하지만, 복습을 하는 목적으로 이번 챌린지에 신청하게 되었는데 이번에 챌린지를 수강하면서, 트랜잭션 개념과 동시성 제어와 관련된 부분들의 개념을 CS 지식을 정리하는 차원에서 정리해보려고 합니다. 그럼 이제 제가 공부한 흐름에 맞춰서 한번 정리해 보도록 하겠습니다. Transaction(트랜잭션) 우선 트랜잭션부터 살펴봅시다. 데이터베이스에서의 Transaction이란 atomic 하게 처리할 수 있는(쪼갤 수 없는 최소 단위를 처리한다는 뜻) 논리적인 작업의 단위.. 2023. 2. 11.
728x90