본격적으로 장마가 시작인가 봅니다. 창문만 열어도 습기에 숨쉬기가 어렵더라고요. 네 저는 종이인간입니다. 특히나 장마철 습기에 매우 약한 신체를 가지고 있습니다.
여름은 제게 너무나도 힘든 계절이지만 버텨내려고 열심히 운동을 하고 있어요. 오고가는 길에 노래를 듣고, 매일 주어진 하루를 힘을 내어 살아가고 있답니다 😁
재규어중사라는 아티스트는 제가 아끼는 동생을 통해 알게 되었어요. 알고보니 8BallTown 소속이시더라고요!?
음색도 정말 좋으시고, 프로듀싱도 잘 하시는 것 같습니다.
그리고 함께하신 모노캣님 역시 8BallTown의 프로듀서 입니다. 코딩하다 지친 마음 감성적인 노래들에 기대어보아요.
1. 엔티티간의 연관 관계 매핑
🚨 일대다 단방향 매핑의 경우 잘 사용하지 않습니다. 그러나 다대일 단방향 매핑을 먼저 한 후에 필요한 경우 일대다 단방향 매핑을 추가해서 양방향 연관 관계를 만들기 때문에 잘 배워둬야 한다고 합니다.
1. 다대일 단방향 연관관계
@JoinColumn(name = "MEMBER_ID")
private Member member;
◾ @ManyToOne : 다대일 관계 명시
◾ @JoinColumn : ORDERS 테이블에서 외래키에 해당하는 열 이름 적어줌
2. Spring Data JPA를 통한 데이터 엑세스 계층 구현
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의 블로그)
🚨 이 글은 개인 학습을 위한 기록입니다. 잘못된 정보가 상당수 있을 수 있습니다.
'코딩하는 코커두드 > 자바, 스프링 백엔드 과정' 카테고리의 다른 글
Day 58 _ 스니펫과 런타임 오류 _The following parts of the payload were not documented (20230704) (0) | 2023.07.04 |
---|---|
Day 53 _ 장마의 시작, 휴가, 트랜잭션 (20230627) (0) | 2023.06.29 |
Day 51 _ JPA, 엔티티 매핑 (20230623) (0) | 2023.06.28 |
Day 50 _ 모든 것은 작은 실수에서 비롯된다 (20230622) (0) | 2023.06.23 |
Day 49 _ service 계층 재학습, 매퍼(mapper) (20230621) (0) | 2023.06.22 |