분류 전체보기(250)
-
JPA proxy - Lazy, Eager loading
Member Entity를 DB에서 조회할 때, Team도 함께 조회해야 하는가? 프록시는 이를 loading방식으로 선택할 수 있게끔 해준다.(뒤에 설명하겠지만 반.드.시 lazy Loading을 하자. 사실 선택 할 수 없음..) 1) 프록시 기초 em.find() vs em.getReference() • em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 • em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 em.find(Member.class, member.getId())의 방식으로 Member를 조회하면, JPA는 여지없이 Member Entity를 데려온다. 하지만 em.getReference()의 방식을 사용하면 JPA는 Member E..
2022.03.30 -
JPQL 페이징 쿼리 & 서브쿼리, 조건식, 기본 함수
JQPL은 페이징을 다음과 같이 지원한다. 코드부터 보자! String jpql = "select m from Member m order by m.name desc"; List resultList = em.createQuery(jpql, Member.class) .setFirstResult(10) .setMaxResults(20) .getResultList(); JPA는 페이징을 다음 두 API로 추상화한다. • setFirstResult(int startPosition) : 조회 시작 위치(0부터 시작) -> 몇번째부터 • setMaxResults(int maxResult) : 조회할 데이터 수 -> 몇개를 가져올거야! 이 두가지 API로 손쉽게 페이징 쿼리를 날릴 수 있다. JQPL 서브쿼리 JQPL..
2022.03.29 -
JPQL 파라미터 바인딩, 프로젝션
JPQL은 파라미터 바인딩을 두가지 방법으로 할 수 있음 1) 이름 기준 -- 권장 2) 위치 기준 -- 권장X 이름 기준 SELECT m FROM Member m where m.username=:username query.setParameter("username", usernameParam); 위치 기준 SELECT m FROM Member m where m.username=?1 query.setParameter(1, usernameParam) 위치 기준이 권장되지 않는 이유는, 카운팅 중간에 다른 쿼리가 들어와야 하는 경우, 그 숫자부터 줄줄이 밀려 전부 변경해야 한다. 가급적이면 이름 기준으로 파라미터를 바인딩 하자. 프로젝션 : SELECT 절에 조회할 대상을 지정하는 것 프로젝션 대상: 엔티티,..
2022.03.28 -
JPQL 기본 문법
JPA는 다양한 쿼리 방법을 지원한다. JPA Criteria, QueryDSL, 네이티브 SQL, Mybatis 등 다 같이 사용할 수 있다. 단, 영속성 컨텍스트를 적절한 시점에 강제로 플러시 필요하다. 영속성 컨텍스트에서 DB로 commit이나, 중간에 flush() 호출이 없으면 DB에는 아직 반영이 안되어있는 상태이기 때문이다. JPQL은 쿼리를 날리기 전에 flush가 동작한다. 이후 쿼리가 실행된다. JPQL은 강제로 수동 flush()를 해줄 필요가 없다. 가장 기본이 되는 방법은 JPQL인데, 이거 잘하면 QueryDSL도 뚝딱이라고 한다. 얼른 쿼리문 짱고수 되고싶다.. 먼저, JPA를 사용하면 엔티티 객체를 중심으로 개발해야 한다. 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로..
2022.03.28 -
REST API와 Ajax(2)
이전 REST API와 Ajax(1)에서는 Ajax와 JSON을 소개했다. REST API 먼저 REST란? Roy Fielding이 제안한 웹서비스 디자인 아키텍쳐 접근 방식이다. 프로토콜에 독립적이며, 주로 HTTP를 사용해 구현한다. REST API란? REST 규약을 준수하는 API란다.. REST는 그럼.. 제약, 규약을 정의해 놓은 것이다. 프로토콜같은 표준은 아니고.. 핵심은 리소스 중심의 API디자인이다. 리소스는 동사가 아닌 명사(회원 등록, 회원 조회, 회원 삭제에서는 회원이 리소스)이며, HTTP 메서드로 수행할 작업을 정의한다. 아래 그림을 보는 것이 이해하기 쉬울 것이다. 아래의 설계가 RESTful하다고 할 수 있다. 리소스(여기서는 comments)를 중심으로, 동사를 uri에..
2022.03.27 -
REST API와 Ajax(1)
먼저 JSON의 개념부터 소개한다. 1. JSON이란? Java Script Object Notation - 자바 스크립트 객체 표기법이다. Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다. 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용한다.(서버에서 클라이언트로 데이터를 전송하여 표현하려거나 반대의 경우) 자바스크립트에서 객체 문법으로 구조화된 데이터는 다음과 같이 표현한다 자바 스크립트에서 객체를 표현하는 방법은 {속성1: 속성값1, 속성2: 속성값2, .....} 객체 배열의 경우는 [{속성: 속성값, ....}, {속성: 속성값, .....}, {}, ... ] Map의 경우는 {키1: {속성1 : 속성값, ...}, 키2: {속성명: 속성값}..
2022.03.27