inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Tạo máy chủ đầu tiên của bạn bằng Java và Spring Boot Bất kỳ ai cũng có thể dễ dàng chuyển từ giai đoạn phát triển sang triển khai! [Gói phát triển máy chủ tất cả trong một]

Bài 33. Liệu chúng ta có thể phát triển theo hướng đối tượng hơn một chút không?

궁금한게 있습니다.

56

eovnfjfpa

25 câu hỏi đã được viết

0

ManyToOne 이 N : 1이라는관계를 표현한다는건 이해가 가는데 그게 어떻게 User 객체와 user_id bigint 컬럼과 매핑이 되는지 잘 모르겠습니다. 대출기록이 여러개고 User 가 1개 라는 것과 저것이 무슨 연관인지 이해가 안갑니다ㅜ

java spring aws mysql spring-boot jpa

Câu trả lời 2

0

lannstark

안녕하세요!! 🙂 질문 주셔서 감사합니다~

1 : N 이란 표현은 이해해주셨는데요~~ 이렇게 생각하시면 되어요!

  • A 데이터가 B 데이터 N개와 연결될 수 이으면 1 : N 관계이다.

  • 즉, 한 유저는 대출 기록 여러개를 가질 수 있죠

  • 반대로 한 유저는 주민등록번호를 반드시 1개만 가질 수 있으므로 1 : 1 관계라고 할 수 있을거에요!

 

자 다음으로

그게 어떻게 User 객체와 user_id bigint 컬럼과 매핑이 되는지 잘 모르겠습니다

라고 해주셨는데요!

JPA를 사용하게 되며

@Entity가 붙은User 클래스는 테이블과 매핑이 됩니다.

객체에서는 long id 로 표현된 데이터가 실제 데이터베이스에는 bigint id 로 저장되는 것이죠


여기까지 이해가 되셨다면, 이제 1번 유저가 있다고 생각해 보겠습니다.

User 클래스의 id 필드에는 1이 들어 있고, user 데이터베이스 id 필드에도 1이 들어 있습니다.

 

이 유저가 100번 책과 110번 책 2권을 빌렸다면 대출 기록은 이렇게 생겼을거에요!

단순화한 대출 기록 스키마 = (user_id, 책 id)

  • (1, 100) -> 1번 유저가 100번 책을 빌렸다

  • (1, 105) -> 1번 유저가 105번 책을 빌렸다

이렇게 되면 유저 테이블에는 데이터가 1줄 들어 있겠고, 대출 기록 테이블에는 데이터가 2줄 들어있겠네요~

 

많은 개념이 동시에 들어오며 1:N 이라는 워딩, 그것이 데이터베이스에서 표현되는 방법론에 대해서 질문 주신 것 같아요! 답변의 흐름을 따라 하나씩 이해해보고, 직접 실행하며 데이터를 확인해보시면 이해가 더욱 잘 되실거에요!

답변이 도움이 되었으면 좋겠습니다. 감사합니다. 🙇

 

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. eovnfjfpa님.

ManyToOne 관계에서의 매핑은 객체 지향 프로그래밍에서 자주 사용되는 개념으로, 데이터베이스에서 외래 키(Foreign Key)를 통해 연결된 테이블 간의 관계를 표현합니다. 이 관계는 User 객체가 여러 대출기록(Entity)과 연결될 수 있다는 것을 의미합니다.

ManyToOne 설명:
- ManyToOne: 여러 개의 대출기록(UserLoanHistory) 엔티티가 하나의 User 엔티티와 연관될 수 있는 관계입니다. 예를 들어, 한 명의 사용자가 여러 권의 책을 빌릴 수 있는 상황을 상상해 볼 수 있습니다. 이 때, 각 대출 기록은 특정 사용자를 참조하게 됩니다.

매핑 설명:
- 객체 매핑: 스프링에서 JPA를 사용하여 ManyToOne 관계를 매핑할 때, User 클래스 내 user_id는 외래 키로서 여러 UserLoanHistory 엔티티에서 참조됩니다. 이로써 여러 대출기록이 각각 동일한 사용자와 연결되어 있는 구조가 됩니다.
- SQL 테이블 및 컬럼: 데이터베이스에서는 각각의 UserLoanHistory 테이블에 user_id라는 컬럼이 주어져 User 테이블의 기본 키와 관계를 맺고 있습니다. 이 컬럼을 통해 데이터베이스는 여러 대출기록이 하나의 사용자와 연관성을 갖게 됩니다.

관련된 개념에 대한 보다 자세한 설명이 필요하시다면, 아래 유사한 질문을 참조해보시는 것도 도움 될 것입니다.
- JPA 연관관계 질문입니다.

이 링크에서는 연결된 테이블 간의 관계와 매핑 과정을 자세히 설명하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

패키지 구분에 대해 궁금한게 있습니다

0

12

1

리액트 관련 질문이 있습니다.

0

62

2

스프링부트 버전

0

69

2

7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.

0

57

2

33강. UserLoanHistory의 관계성에 대한 질문

1

54

2

Java JDK 버전 문의의 건

0

131

2

ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.

0

84

3

h2 console 접속했을 테이블 질문

1

63

1

ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨

0

73

2

15강. updateUser() 질문

0

54

2

깃허브 질

0

80

2

여기까지 다 끝냈다고 하셨는데

0

77

2

왜안될까요

0

68

2

MySQL 창이안ㄴ뜹니다

0

57

2

포스트맨

0

48

1

spring 개념적인 질문

0

70

2

인텔리제이 샘플코드 실행 안됨 오류

0

138

2

aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다

0

81

1

마이그레이션 오류입니다.

0

168

3

Whitelabel Error Page 오류가 났습니다.

0

161

2

안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ

1

89

3

DTO 관련

0

68

2

궁금한게 있습니다!

0

64

2

35강에서 returnBook 에서 userLoanHistory 값 중복에 관하여

0

55

2