inflearn logo
강의

講義

知識共有

JavaとSpring Bootで生涯初のサーバー作り、誰でも簡単に開発から配布まで! 【サーバー開発オールインワンパッケージ】

第33講。もう少しオブジェクト指向的に開発できないだろうか?

궁금한게 있습니다.

54

eovnfjfpa

投稿した質問数 25

0

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

java spring aws mysql spring-boot jpa

回答 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

60

2

스프링부트 버전

0

66

2

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

0

55

2

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

1

51

2

Java JDK 버전 문의의 건

0

126

2

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

0

81

3

h2 console 접속했을 테이블 질문

1

62

1

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

0

71

2

15강. updateUser() 질문

0

51

2

깃허브 질

0

77

2

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

0

75

2

왜안될까요

0

67

2

MySQL 창이안ㄴ뜹니다

0

53

2

포스트맨

0

46

1

spring 개념적인 질문

0

68

2

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

0

138

2

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

0

81

1

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

0

165

3

Whitelabel Error Page 오류가 났습니다.

0

156

2

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

1

87

3

DTO 관련

0

66

2

궁금한게 있습니다!

0

60

2

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

0

54

2

질문있습니다!

2

51

1