작성
·
300
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
에 매핑됩니다. 별도의 이름을 지정하지 않았다면, 클래스 이름을 테이블 이름으로 생각하게 됩니다. 👍
감사합니다! 🙏