본문 바로가기
코딩하는 코커두드/자바, 스프링 백엔드 과정

Day 52 _ 트랜젝션 들어가기 전, 연관관계 매핑 등 (20230626)

by 코커두드 2023. 6. 28.

재규어중사와 Monocat의 앨범. CATWALK

본격적으로 장마가 시작인가 봅니다. 창문만 열어도 습기에 숨쉬기가 어렵더라고요. 네 저는 종이인간입니다. 특히나 장마철 습기에 매우 약한 신체를 가지고 있습니다. 

여름은 제게 너무나도 힘든 계절이지만 버텨내려고 열심히 운동을 하고 있어요. 오고가는 길에 노래를 듣고, 매일 주어진 하루를 힘을 내어 살아가고 있답니다 😁

 

재규어중사라는 아티스트는 제가 아끼는 동생을 통해 알게 되었어요. 알고보니 8BallTown 소속이시더라고요!?

음색도 정말 좋으시고, 프로듀싱도 잘 하시는 것 같습니다.

그리고 함께하신 모노캣님 역시 8BallTown의 프로듀서 입니다. 코딩하다 지친 마음 감성적인 노래들에 기대어보아요.

 

 

1. 엔티티간의 연관 관계 매핑

🚨 일대다 단방향 매핑의 경우 잘 사용하지 않습니다. 그러나 다대일 단방향 매핑을 먼저 한 후에 필요한 경우 일대다 단방향 매핑을 추가해서 양방향 연관 관계를 만들기 때문에 잘 배워둬야 한다고 합니다. 

 

1. 다대일 단방향 연관관계

@ManyToOne
@JoinColumn(name = "MEMBER_ID")
private Member member;

◾ @ManyToOne : 다대일 관계 명시

◾ @JoinColumn : ORDERS 테이블에서 외래키에 해당하는 열 이름 적어줌

 

 

2. Spring Data JPA를 통한 데이터 엑세스 계층 구현

public interface CoffeeRepository extends JpaRepository<Coffee, Long> {
Optional<Coffee> findByCoffeeCode(String coffeeCode);

@Query(value = "SELECT c FROM Coffee c WHERE c.coffeeId = :coffeeId")
Optional<Coffee> findByCoffee(long coffeeId);
}

(1) CrudRepository를 상속하는 대신 JpaRepository를 상속

(2) JPQL을 통한 객체지향 쿼리 사용

   ◾ JPA 에서는 JPQL이라는 객체 지향 쿼리를 통해 테이블 조회 가능

   ◾ JPQL 문법 사용해서 객체 조회 → JPA가 내부적으로 JPQL 분석 → SQL 만듦 → 데이터베이스 조회 → 조회한 결과         엔티티 객체로 매핑한 뒤 반환

   ◾ JPQL의 쿼리문은 SQL과 문법이 유사함

   ◾ JPQL은 엔티티 객체를 대상으로 조회. COFFEE 테이블이 아닌 Coffee 클래스라는 객체를 지정하고, coffee_id라는 열        이 아닌 coffeeId 필드 지정. 따라서 Coffee는 클래스명,  coffeeId는 Coffee 클래스의 필드명임.

   ◾ 'c'는 Coffee 클래스의 별칭. SQL에서 사용하는 *이 아니라 'c'로 모든 필드 조회함

   ◾ 'Select c' 생략한 형태로 사용 가능

   ◾ 참고로 SQL은 데이터베이스 테이블을 대상으로 쿼리 질의

 

 

 

마무리

머지 않아 이 내용들이 단계적으로 이해가 확! 되는 시기가 왔으면 좋겠습니다. 

 

관련글

https://ict-nroo.tistory.com/116 (Namjun Kim의 블로그)

 

 

 

 

 

 

🚨 이 글은 개인 학습을 위한 기록입니다. 잘못된 정보가 상당수 있을 수 있습니다.