Spring JPA17 객체지향 쿼리 언어 - 13 JPQL - Java Persistence Query Language 엔티티 객체를 조회하는 객체지향 쿼리 -> 테이블을 대상으로 쿼리하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다. SQL을 추상화해서 특정 데이터베이스에 의존하지 않는다. SQL보다 간결하다. JPQL은 결국 SQL로 변경된다. String jpql = "select m from Member as m where m.username = 'kim'"; List resultList = entityManager.createQuery(jpql, Member.class).getResultList(); SELECT 문 select m from Member as m where m.username = 'Kim' 대소문자 구분 엔티티와 속성은 대소문자.. 2021. 7. 17. 값 타입 - 12 임베디드 타입(복합 값 타입) @Entity public class Member { @Id @GeneratedValue private Long id; private String name; @Embedded private Address homeAddress; @Embedded @AttributeOverrides({ @AttributeOverride(name = "city", column=@Column(name = "company_city")), @AttributeOverrdie(name = "district", column=@Column(name = "company_district")), @AttributeOveerdie(name = "zipcode", column=@Column(name = "compan.. 2021. 7. 16. 프록시와 연관관계 관리 - 11 프록시 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 지연 로딩이라 한다. 지연 로딩 기능을 사용할 때 실제 엔티티 객체 대신 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이것을 프록시 객체라고 한다. 프록시 기초 엔티티를 실제 사용하고 싶은 지점까지 미루고 싶을 때, EntityManager.getReference(Class entityClass, Object primaryKey)를 사용하면 된다. 프록시 객체에 member.getName()을 호출해서 실제 데이터를 조회한다. 프록시 객체는 실제 엔티티가 생성되어 있지 않으면 영속성 컨텍스트에 실제 엔티티 생성을 요청하는데 이것을 초기화라 한다. 영속성 컨텍스트는 데이터베이스를 조회해서 실제 엔티티 객체를 생성한다. 프록.. 2021. 7. 13. 고급 매핑 - 10 상속 관계 매핑 - 조인 전략 엔티티 각각 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용하는 전략 ※ 객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없으므로 타입을 구분하는 컬럼을 추가해야 한다. 조인 전략 매핑 @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name = "TYPE") public abstract class Item { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String price; } @Entit.. 2021. 7. 12. 이전 1 2 3 4 5 다음