Free Lines Arrow
본문 바로가기
728x90

DataBase60

[JPA] JPQL 이란? JPQL 이란? Java Persistence Query Language 이다. 객체지향 쿼리 언어다. - 그렇기 때문에 테이블이 대상이 아니라 엔티티 객체를 대상으로 쿼리한다. JPQL 은 SQL을 추상화 해서 특정 DB SQL 에 의존하지 않는다. JPQL은 SQL로 변환되어 수행된다. 언제 써야 될까? 복잡한 쿼리를 조회할때 사용한다. 예를 들어 18세 이상회원을 조회 할때 find 로는 한계가 있다. 그렇기 때문에 JPQL 을 사용해야된다. JPQL을 기반으로한 기능들 JPA Criteria 크레이티어리아 QueryDSL 네이티브 SQL JDBC API 직접 사용이 가능하다. JPQL 예제 JPQL 은 테이블을 다루는게 아니라 객체를 다룬다. m 은 멤버객체를 조회 하라는 뜻이다. String q.. 2021. 9. 23.
[JPA] 값타입 컬렉션 값 타입 컬렉션 값 타입을 하나 이상 저장 할 때 사용한다. 즉 List 나 Set 을 이용하여 저장하는 것을 말한다. 컬렉션을 DB에 어떻게 표현을 해야 될까? DB 에는 자료구조 개념이 없기 때문에 1:N 으로 풀어야 된다. 예시 멤버에는 좋아하는 음식들 그리고 내가 주문했던 위치들을 있다고 해보자 다음과 같이 표현할수 있다. 값타입 어노테이션 @ElementCollection: - 컬렉션 객체임을 JPA 에게 알려준다. @CollectionTable(name = "ADDRESS", joinColumns = @JoinColumn(name = "MEMBER_ID") ) : - 새롭게 생성되는 테이블에 대한 정보를 입력하는 어노테이션이다. - 컬럼 이름은 ADDRESS 이고 FK 는 MEMBER_ID 로.. 2021. 9. 17.
[JPA] 값타입 JPA의 데이터 타입 JPA의 데이터 분류는 엔티티 타입과 값 타입으로 크게 분류 된다. 값타입은 다양하지만 기본값 타입과 임베디드 타입이 중요하다. 엔티티 타입 @Entity 로 정의하는 객체이다. 데이터가 변해도 식별자로 지속해서 추적이 가능하다. 값 타입 int, integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이다. 식별자가 없다. 그렇기 때문에 변경시 추적이 불가하다. 값타입 분류 1. 기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String 생명주기를 엔티티에 의존한다. 회원을 삭제하면 String name등 같이 삭제된다. 2. 임베디드 타입 복합값 타입 새로운 값 타입을 직접 정의할 수 있다. 기본 생성자가 필수이다. 3.. 2021. 8. 22.
[JPA] CASCADE CASCADE 영속성 전이라고 한다. 연관된 엔티티를 같이 영속화 하는 기능이다. 연관관계 맵핑이랑 전혀 상관이 없다. CASCADE를 안쓰는 경우 Parent 가 Child를 List 로 가지고 있을경우 일반적일때는 Parent도 persist 를 해줘야 하고 child도 persist를 해줘야 한다. 코드 지금까지 배운 내용을 보면 당연하다. parent 도 영속성 컨텍스트로 넣어주고 child1, child2 도 영속성 컨텍스트로 넣어줘야 한다. @Entity public class Parent { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; // cascade 를 해주면 child는 알아서 저장된다. // collection안.. 2021. 8. 22.
728x90
반응형