• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

31강 질문 있습니다.

24.01.18 18:38 작성 조회수 194

2

책 대출기능 DB 테이블명을 'user_loan_hostory'라고 오타를 내서 생성을 하니까 책 대출 시 서버 내부 오류가 발생했습니다.

그래서 테이블명을 'user_loan_history'로 수정한 후 대출 기능을 다시 실행해보니 잘 동작합니다.

왜 테이블명이 user_loan_hostory일 때는 인식하지 못하고, user_loan_history로 수정한 후에만 인식이 되는걸까요?

db 테이블과 엔티티 객체를 매핑할 때, 대응되는 필드만 맞으면 DB 테이블명을 명시적으로 작성해주지 않아도 스프링이 알아서 인식하는 것이 아닌가요?ㅜㅜ

답변 1

답변을 작성해보세요.

1

안녕하세요 지현님! 질문 남겨주셔서 감사합니다. 🙂

 

결론부터 말씀드려 보면, 스프링 (정확히는 JPA) 이 인식하는 규칙은 "테이블 이름"과 "Entity 이름"을 확인하는 거에요! 따라서 필드가 동일하더라도 테이블 이름이 다르면 인식하지 못하는 것이 맞습니다.

보다 더 엄밀하게는, Entity 이름의 경우 @Table 어노테이션을 이용해 별도의 이름을 지정해 줄 수도 있답니다.

@Table(name = "my_table")
@Entity
public class Hello {

}

예를 들어 위의 경우 Hello Entity 클래스는 my_table 에 매핑됩니다. 별도의 이름을 지정하지 않았다면, 클래스 이름을 테이블 이름으로 생각하게 됩니다. 👍

 

감사합니다! 🙏