inflearn logo
강의

Course

Instructor

[Concepts are easy, Practice is intense] Spring Boot, Introduction!

22 Comment Entity and Repository (Test It First?)

22강 관련질문

305

c50707345634

13 asked

0

Comment객체에는 Article객체를 하나의 column으로 가지고 있는데 이는 외래키와의 매핑하고 매핑되는 column을 article_id라고 정하는 것은 이해를 했습니다 하지만
Comment a = new Comment(1L, article, "Park", "굳 윌 헌팅");

위 코드처럼 article을 인수로 넘겨주면 article안에는 id, title, content라는 여러 column이 있는데 이중에 왜 id값이 선택되는지 궁금합니다

예시로 data.sql에서
INSERT INTO comment(article_id, nickname, body) VALUES(4, 'Park', '굳 윌 헌팅');

이런 sql문을 넣는데 article_id라는 column은 Article타입인데 정수(Long)를 넣어도 어떻게 성립이 되는건지 궁금합니다.

spring-boot

Answer 2

1

hongpark

해당강의는
스프링부트 입문강의로
JPA와 관련된 자세한 내용은
다루지 않습니다만,

간단히 말씀드리자면
JPA가 자동으로 기본키(PK)를 찾고
이를 테이블에 알아서 저장해 줍니다

Article 엔티티 선언 시
@Id로 선언한 필드가
자동으로 PK로 인식되게 됩니다

 

1

hongpark

PS.

article_id라는 column은
Article 타입이 아닌
bigint 타입입니다

0

communityai8509

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

Comment 클래와 Article 클래스 사이의 관계를 맺을 때, 구현한 ORM(Object-Relational Mapping) 기술에 의하여 객체와 테이블 간의 매핑이 정의됩니다. Spring에서는 @Entity 어노테이션을 사용해 클래스를 엔티티로 선언하고, 이 클래스의 필드를 테이블의 컬럼에 매핑합니다. 때문에, 여러분의 Comment 클래스에는 Article 객체를 참조하는 필드가 있고 이 필드는 @ManyToOne 또는 @JoinColumn 같은 어노테이션을 통해 외래키 컬럼에 매핑됩니다.

Article 객체를 Comment 객체에 할당하게 되면, ORM 프레임워크(예: Hibernate)는 Article 객체의 식별자(Primary key)를 사용하여 데이터베이스의 외래키 컬럼(article_id)에 값을 설정합니다. 그렇기 때문에 실제 데이터베이스 트랜잭션은 Article ID 값만을 외래키로서 사용하게 됩니다.

INSERT INTO comment(article_id, nickname, body) VALUES(4, 'Park', '굋 윌 헌팅'); SQL 명령문과 같이 수동으로 데이터를 삽입할 때는 외래키로 사용될 Article의 ID 값을 직접 지정합니다. article_id 컬럼은 실제로는 Article 테이블의 기본키에 해당하는 ID 값을 저장하기 위한 컬럼이기 때문에 정수(Long) 형태의 ID 값이 사용됩니다.

스프링 부트 또는 ORM 관련 문서를 참고하시면 여러분이 작성하는 매핑과 트랜잭션 과정에 더 자세한 이해를 할 수 있습니다.

참고 자료:
- Spring Boot Reference Documentation v3.1.5: SQL Databases
- Spring Data JDBC - Reference Documentation v3.1.5: ID Generation

23강 댓글 생성 메소드 오류

0

82

2

15.14 강 에러 문제 질문

0

54

1

21강 자율 과제중 update

0

116

2

28강 DB mysql연동 관련 질문

0

279

1

27강 관련 질문

0

198

1

21강 create테스트 질문

0

357

1

9강 질문 있습니다

0

277

1

로그창에 내용이 출력이 안됩니다.

0

366

1

index()함수 질문있습니다.

0

358

3

수정완료를 눌렀을때 첫번째 데이터는 전송이 안되고 다시 수정완료 버튼을 눌러야 데이터가 전송 됩니다.

0

471

1

강의와 책 질문

0

433

1

20강 질문있습니다.

0

397

1

20강에서 Article create 부분

0

287

1

16강 질문있습니다.

0

264

1

mustache의 article의 정의가 뭔가요?

0

338

2

17강 Unique index or primary key violation

1

1826

2

8강 에러 질문있습니다.

0

268

1

15강 DB연결

0

341

1

추상클래스를 사용 할 수있을까요?

0

241

1

22강 과제 질문

0

374

1

22강 질문입니다.

0

368

1

19강 create POST 500 에러

0

454

1

19강 JSON create 메서드 질문이여!!

1

540

1

15강 data.sql코드가 작동하지 않습니다.

1

659

2