일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백준
- 알고리즘
- 김영한
- Proxy
- 자바
- pointcut
- jpa
- Spring Boot
- db
- 인프런
- spring
- AOP
- transaction
- Android
- kotlin
- SpringBoot
- Servlet
- http
- springdatajpa
- 스프링 핵심 기능
- JPQL
- QueryDSL
- Exception
- 스프링 핵심 원리
- Greedy
- 스프링
- Thymeleaf
- 그리디
- JDBC
- java
- Today
- Total
목록인프런/[인프런] 자바ORM 표준 JPA 프로그래밍 (49)
개발자되기 프로젝트
1. 기본 CASE 식 if와 유사, 해당 조건이 만족하면 then 하위 내용 으로 결과. Select case when m.age = 60 then '경로요금' else '일반요금' end from Member m 예제 String query = "select " + "case when m.age =60 then '경로요금'" + " else '일반요금' end " + "from Member m"; 2. 단순 CASE 식 switch와 유사, 정확하게 내용이 매치되면 결과 select case t.name when '팀A' then '인센티브 110%' when '팀B' then '인센티브 120%' else '인센티브 105%' end from Team t 3. COALESCE 하나씩 조회해서 nu..
1. JPQL 타입 표현 문자 : 'HELLO', 'SHE"s' 숫자 : 10L(Long), 10D(Double), 10F(Float) Boolean : TRUE, FALSE ENUM : jpabook.MemberType.Admin ( 패키지명 표함) 엔티티 타입 : TYPE(m) = Member(상속 관계에서 사용)--> DiscriminatorValue로 활용됨 em.createQuery("select i from Item i where type(i) = Book", Item.class) 2. 예제 String query = "select m.username, 'HELLO', TRUE from Member m "; List result = em.createQuery(query) .getResultLi..
1.서브쿼리란? 쿼리안에 쿼리 나이가 평균보다 많은 회원 select m from Member m where m.age>(select avg(m2.age) from Member m2) 한 건이라도 주문한 고객 select m from Member m where (select count(o) from Order o where m = o.member) > 0 2. 서브쿼리 지원 함수 [NOT] EXIST (subquery) : 서브쿼리에 결과가 존재하면 참 {ALL | ANY | SOME} (subquery) ALL : 모두 만족하면 참 ANY, SOME : 같은 의미, 조건을 하나라도 만족하면 참 [NOT] IN (subquery): 서브쿼리의 결과 중 하나라도 같은 것이 있으면 참. 3.예제 팀 A 소속..
1. Join 객체 중심. 내부 조인 : INNER JOIN, inner는 생략 가능. 멤버는 있는데 팀이 없으면 결과 안나옴. SELECT m FROM Member m [INNER] JPOIN m.team t 외부 조인 : LEFT OUTER or LEFT outer는 생략 가능. 팀이 없어도 팀 데이터 NULL로 넣고 멤버는 조회됨. SELECT m FROM Member m LEFT [OUTER] JOIN m.team t 세타 조인 연관관계가 없는 두 엔티티를 막 비교해보고 싶을 때 사용. select count(m) from Member m, Team t where m.username = t.name 2. 내부 조인 //member 와 team을 inner join함. 이제 team을 쓸 수 있음...
1. 페이징 API JPA는 페이징을 다음 두 API로 추상화 setFirstResult(int startPosition) : 조회 시작 위치, 어디서부터? (0부터 시작) setMaxResult(int maxResult) : 조회할 데이터 수 , 몇개? 2. 예시 setFirstResult(2) --> offset 적용 97부터 10개 for(int i = 0; i < 100 ; i++){ Member member = new Member(); member.setAge(i); member.setUsername("member" + i); em.persist(member); } em.flush(); em.clear(); List resultList = em.createQuery("select m from M..
1. 프로젝션이란? SELECT 절에 조회할 대상을 지정하는 것. 프로젝션 대상 : 엔티티, 임베디드 타입, 스칼라 타입(숫자, 문자 등 기본 데이터 타입) 프로젝션한 엔티티는 영속성 컨텍스트에 의해 관리돤다. 따라서 SELECT를 통해 선택한 엔티티는 영속성 컨텍스트에 의해 변경되며 SELECT m FROM Member m -> 엔티티 프로젝션 List result = em.createQuery("select m from Member m ", Member.class).getResultList(); Member findMember = result.get(0); findMember.setAge(20); SELECT m.team FROM Member m -> 엔티티 프로젝션 SELECT m.address F..
1. JPQL JPQL은 객체지향 쿼리 언어이다. 따라서 테이블을 대상으로 쿼리하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다. JPQL은 SQL을 추상화해서 특정데이터베이스 SQL에 의존하지 않는다. JPQL은 결국 SQL로 변환된다. . 2. 객체 모델 3.DB 모델 4. JPQL 문법 QL 문법 select_문 :: = select_절 from_절 [where_절] [groupby_절] [having_절] [orderby_절] update_문 :: = update_절 [where_절] delete_문 :: = delete_절 [where_절] select m from Member as m where m.age > 18 엔티티와 속성은 대소문자 구분 가능(Member, age) JPQL 키워드는 대..
1. JPA는 다양한 쿼리 방법을 지원 JPQL JPA Criteria QueryDLS 네이티브 SQL JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 2. JPQL 가장 단순한 조회 방법 EntityManager.find() 객체 그래프 탐색(a.getB().getC()) 만약 나이가 18살 이상인 회원을 모두조회하는 경우는...? JPA를 사용하면 엔티티 객체를 중심으로 개발 문제는 검색 쿼리임 검색을 할 때에도 테이블이 아닌 엔티티 객체를 대상으로 검색 모든 DB데이터를 객체로 변환해서 검색하는 것은 불가능!! 매플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요해. 그래서 JPA는 SQL을 추상화한 JPQL이라는 객체 지..