분류 전체보기28 스프링 데이터 JPA - 15 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발을 완료할 수 있다. JpaRepository 계층 구조 save(S) : 새로운 엔티티를 저장하고 이미 있는 엔티티는 수정한다. delete(T) : 엔티티 하나를 삭제한다. 내부에서 EntityManager.remove()를 호출한다. findOne(ID) : 엔티티 하나를 조회한다. 내부에서 EntityManager.find()를 호출한다. getOne(ID) : 엔티티를 프록시로 조회한다. 내부에서 EntityManager.getReference()를 호출한다. findAll(...) : 모든 엔티티를 조회한다. 정렬이나 페이징조건을 파라미터로 제공할 수 있다. 쿼리 메소드 기능 메소드 이름만으로 쿼리를 생성하는 기능 -> .. 2021. 7. 31. 객체 지향 쿼리 언어 - 14 Criteria Criteria 쿼리는 JPQL을 자바 코드로 작성하도록 도와주는 빌더 API 문자가 아닌 코드로 JPQL을 작성하므로 문법 오류를 컴파일 단계에서 잡을 수 있다. 문자 기반의 JPQL보다 동적 쿼리를 안전하게 생성할 수 있다. 코드가 복잡하고 장황해서 직관적으로 이해가 힘들다는 단점도 있다. //JPQL: select m from Member m //Criteria 쿼리 빌더 CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); //Criteria 생성, 반환 타입 지정 CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(Member.class); //from 절 .. 2021. 7. 21. 객체지향 쿼리 언어 - 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. 이전 1 2 3 4 5 6 7 다음