분류 전체보기

1. 프로젝션이란?- SELECT 절에 조회할 대상을 지정하는 것 2. 프로젝션 대상✔️엔티티, 임베디드 타입, 스칼라 타입(기본 데이터 타입) 관계형 데이터베이스는 테이블 내의 개별적인 값을 가지는 데이터들을 조회한다.예를 들어, Employees 테이블에 EmployeeID, Name, Age와 같은 속성에 있는 값을 조회하는 거다.프로젝션 대상이 스칼라 타입이라고 볼 수 있다. JPQL에서는 관계형 데이터베이스와 달리 조회 대상이 더 넓다. 3. 프로젝션 대상 이해하기 ✅ Member 엔티티  @Entity@Getter@Setterpublic class Member { @Id @GeneratedValue private Long id; private String username; ..
JPA 기본 | 객체지향 쿼리 언어 알아보기(JPQL, QueryDSL 등)1. JPQL1-1) JPQL이란?JPQL은 JPA에서 제공하는 객체지향 쿼리 언어 중 하나다.JPQL은 엔티티 객체를 대상으로 쿼리를 작성할 수 있게 해준다. 1-2) JPQL의 특징✔️ 객체지향 쿼리- 관계형 데이터베이스ururuwave.tistory.comJPQL이 무엇인지는 지난 포스팅에서 다뤘다. 1. 기본 문법1-1) JPQL은 엔티티 객체를 대상으로 쿼리를 작성한다. select m from Member as m where m.age > 18- 엔티티와 속성은 대소문자를 구분한다. (ex. Member, age)- JPQL 키워드는 대소문자를 구분하지 않는다.(ex.SELECT, FROM, where)- 별칭은 필수다..
1. JPQL1-1) JPQL이란?JPQL은 JPA에서 제공하는 객체지향 쿼리 언어 중 하나다.JPQL은 엔티티 객체를 대상으로 쿼리를 작성할 수 있게 해준다. 1-2) JPQL의 특징✔️ 객체지향 쿼리- 관계형 데이터베이스의 테이블이 아닌 엔티티 객체를 대상으로 쿼리를 작성할 수 있다.- 테이블과 컬럼 대신 엔티티 클래스와 필드를 참조한다. ✔️ 데이터베이스 독립성- 특정 데이터베이스에 종속되지 않고 독립적인 쿼리를 작성할 수 있다. -> JPQL은 SQL로 변환된다.- JPQL은 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다.  ✔️ 표준화- JPQL은 JPA 표준에 포함되어 있어서 다양한 JPA 구현체(Hibernate 등)에서 동일하게 사용할 수 있다. 1-3) JPQL의 한계점-..
1. 값 타입 컬렉션JPA에서 엔티티가 여러 개의 동일한 값 타입을 컬렉션으로 하나 이상 저장할 때 사용한다. 말이 좀 헷갈리니 바로 코드로 보자.✅값 타입 컬렉션 사용 예시@Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; @Embedded private Period workPeriod; @Embedded private Address homeAddress; @ElementCollection @CollectionTable(name = "FAVORITE_FOOD" , j..
1. 값 타입 공유💡임베디드 값 타입의 실제 인스턴스인 값을 공유하면 위험하다. 1-1) 실제 인스턴스인 값을 공유했을 때 ✅ Address(임베디드 값 타입)와 Member(엔티티) 코드@Embeddable @Getter @Setter public class Address { private String city; private String street; private String zipcode; public Address() { } public Address(String city, String street, String zipcode) { this.city = city; this.street = street; this.zipcode = zipcode; } } @Entity @Getter @Setter ..
1. 기본값 타입생명주기를 엔티티에 의존값 타입은 공유되지 않는다. (변경시 다른 값도 변경되면 안된다.)래퍼 클래스나 String같은 클래스는 공유가능한 객체지만 변경안됨.2. 임베디드 값 타입(복합 값 타입)재사용 가능한 값 타입 객체를 정의하여 엔티티의 일부분으로 포함시킨다. 2-1) 임베디드 값 타입 사용법✅임베디드 값 타입 사용 예시위 그림을 차근차근 설명해보자면,✔️ 멤버 엔티티는 이름, 근무 시작일(startDate), 근무 종료일(endDate), 주소 도시(city), 주소 번지(street), 주소 우편번호(zipcode)를 가진다.근무 시작일, 근무 종료일은 기간으로 묶을 수 있다. 주소 도시, 주소 번지, 주소 우편번호는 주소로 묶을 수 있다. ✔️ @Embeddable 애노테이션을..
1. 영속성 전이(CASCADE)특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속상태로 만든다.ex) 부모 엔티티를 저장할 때, 자식 엔티티도 함께 저장. 💡연관관계 매핑과 아무 관련이 없다. 연관된 엔티티를 함께 영속화하는 편리함만 제공할 뿐이다.💡연관된 엔티티가 다른 곳에서도 관리되는 엔티티라면 CASCADE를 쓰면 안된다. ✅코드 예시@Entity@Getter@Setterpublic class Parent { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "parent") private List childList = new ArrayList(); ..
즉시 로딩과 지연 로딩을 이해하기 위해 프록시 개념을 먼저 이해해야한다. JPA 기본 | 프록시 (즉시 로딩, 지연 로딩을 이해하기 위한)1. 프록시란?JPA에서 연관된 엔티티를 지연 로딩하기 위해 사용되는 객체다.데이터베이스 접근을 지연시켜 성능을 최적화한다.필요한 시점까지 데이터 로딩을 미뤄서 메모리 사용량을 줄이고 불ururuwave.tistory.com그래서 이전에 포스팅한 프록시를 첨부한다. 1. 지연 로딩, 즉시 로딩 개념- 지연 로딩 : 연관된 엔티티를 실제로 접근할 때까지 데이터베이스 조회를 지연시키는 로딩 전략- 즉시 로딩 : 연관된 엔티티를 함께 조회하여 즉시 데이터베이스에서 로드하는 로딩 전략 2. 지연 로딩(fetch = FetchType.LAZY)Member 엔티티와 Team 엔티..
백엔드 개발자 - 젤리곰
'분류 전체보기' 카테고리의 글 목록 (4 Page)