본문 바로가기
[JPA] JPQL, QueryDSL JPQL : 객체지향쿼리 - SQL을 추상화한 JPA의 객체지향 쿼리 - 테이블이 아닌 엔티티 객체를 대상으로 쿼리 - 엔티티와 속성은 대소문자 구분 - 테이블 이름이 아닌 엔티티 이름 사용 - 별칭(alias) 사용 필수 1. EntityManager 사용시 select alias 시 전체 조회 (sql 에서 a.* 와 같음) 변수바인딩은 :이름 혹은 ?시퀀스 로 할 수 있다 1 2 3 4 5 6 7 8 9 10 11 12 @Autowired EntityManager em; User user = new User(); user.setName("pyo"); userRepository.save(user); TypedQuery tq = em.createQuery("select u from User u wher.. 2020. 3. 21.
[JPA] JPA 영속성 컨텍스트 영속성 컨텍스트 - 엔티티를 영구 저장하는 환경 - 영속성 컨텍스트는 논리적인 개념으로 눈에 보이지 않음 - 엔티티 매니저를 통해 영속성 컨텍스트에 접근 생명주기 비영속(new) 영속성 컨텍스트와 관계 없는 상태 Member member = new Member(); member.setId("m1"); member.setUsername(""); 영속(managed) 영속성 컨텍스트에 저장된 상태 Member member = new Member(); member.setId("m1"); member.setUsername(""); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); em.persist(member); 준영속(det.. 2020. 3. 8.
[JPA] 연관관계 매핑 : 단방향, 양방향 매핑 JPA에서의 연관관계 매핑 1. 단방향 매핑 Team 1 : User N 인 경우 User entity가 참조할 Team entity 매핑키(tid)를 넣어준다. [Sample Code] [Team entity] 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 32 33 34 35 36 37 38 39 package com.jpp.webservice.web.domain.team; import java.util.ArrayList; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import jav.. 2020. 3. 1.
[JPA] JPA 기초 설정 및 entity 필드 매핑 - JPA 는 특정 데이터베이스에 종속적이지 않음 - dialect interface 를 구현하는 MySQLDialect, OracleDialect H2Dialect 등이 존재 (dialect : SQL 표준을 지키지 않거나 특정 데이터베이스만의 고유한 기능(ROWNUM(ORACLE) vs LIMIT(Mysql))) - h2 : 크기가 작은 메모리 DB, 테스트용으로 사용 [pom.xml (dependency)] org.hibernate.hibernate-entitymanager dependency필요(해당 dependency가 jpa.persistence-api, hibernate-core 땡겨옴) [persistence.xml] jpa 설정을 위한 persistence.xml가 필요(spring fw.. 2020. 2. 27.
[JPA] JPA란? : 등장배경, ORM, 하이버네이트 기존 개발방식(mybatis)의 문제- 물리적으로 코드가 분리되어있지만 논리적인 분리는 이루어 지지 않음- sql 에 의존적인 개발- 유지보수의 문제(칼럼 추가 수정 삭제시 sql, 코드 수정 양이 큼)- 패러다임 불일치 문제 : a 테이블을 참조하고 있는 b 테이블, b 테이블에 데이터를 넣을 때 a 테이블에도 데이터를 넣어줘야 참조관계가 깨지지 않음 JPA : Java Persistence API- 자바 진영의 ORM 기술 표준 ORM: Object-relational mapping(객체 관계 매핑)- 객체는 객체대로 설계, 관계형 데이터베이스는 관계형 데이터베이스대로 설계- ORM 프레임워크가 이 둘을 중간에서 매핑 JPA는 애플리케이션과 DB 사이에 있다JAVA APP JPA JDBC API DB.. 2020. 2. 23.