우주먼지
Where
Database/SQL 2023. 3. 11. 16:42

💡 Where 레코드를 필터링 하는데 사용, 지정된 조건을 충족하는 레코드만 추출하는데 사용한다. SELECT column1, column2 FROM table_name WHERE condition; Sample Table CustomerID CustomerName ContactName Address City PostalCode Country 1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany 2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico 3 Antonio Moreno Taquería Anto..

Select
Database/SQL 2023. 3. 11. 16:41

💡 Select 데이터베이스에서 데이터를 선택하는데 사용 SELECT column1, column2 FROM table_name; Sample Table CustomerID CustomerName ContactName Address City PostalCode Country 1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany 2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico 3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 0..

JPQL Type Query & Sub Query
Database/JPQL 2023. 3. 11. 13:57

💡 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 Paging API & Search Result API
Database/JPQL 2023. 3. 11. 13:55

💡 Paging API JPA는 페이징 API를 다음 두 API로 추상화 해뒀다. 조회 시작위치(0부터 시작) setFirstResult(int startPosition) 조회할 데이터 수 setMaxResults(int maxResult) 예시 모든 데이터 베이스의 방언이 동작한다. LIMIT & OFFSET은 MySQL 방언이다. hibernate.dialect를 Oracle12cDialect로 변경해주면 Oracle 방언인 rownum 3 depth 전략으로 페이징을 짠다. // Member Class에 toString()을 Override 해준다. for (int i=0, i

JPQL Projection
Database/JPQL 2023. 3. 11. 13:52

💡 프로젝션 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 Parameter Binding
Database/JPQL 2023. 3. 11. 13:51

💡 파라미터 바인딩 왠만하면 이름으로 바인딩하자. 위치 기준으로 바인딩 시 위치가 바뀌면 꼬일 수 있다. 이름 기준 Member result = em.createQuery( "select m from Member m where m.username = :username", Member.class) .setParameter("username", "member1") .getSingleResult(); SELECT m FROM Member m where m.username=:username 위치 기준 Member result = em.createQuery( "select m from Member m where m.username = ?1", Member.class) .setParameter(1, "member1..

JPQL Basic
Database/JPQL 2023. 3. 5. 00:58

💡 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 가장 단순한..

검색 태그