JPA에서 중요하게 봐야하는 것 두가지는
- 영속성 컨텍스트(JPA가 내부적으로 어떻게 동작하는지에 관한 매커니즘)
- 객체랑 관계형 데이터 베이스를 어떻게 매핑해야 하는지에 대한 실제 설계적인 측면.
JPA는 엔티티를 특정 어노테이션을 활용하여 매핑한다.
객체와 테이블 매핑
@Entity는 JPA가 엔티티로 관리할 수 있게, 해당 클래스에 선언하여 지정해주는 어노테이션이다.
그래서 JPA를 사용해 테이블과 매핑할 클래스는 @Entity가 필수이다.
+기본 생성자가 필수인 이유는, JPA같은걸 구현해서 쓰는 라이브러리들이 동적으로 뭘 한다거나, 리플렉션을 한다거나 이런 것들이 있는데, 그런것들을 하려면 기본 생성자가 필요하기 떄문이다.
이렇게 Entity 어노테이션으로 지정해주면, JPA가 관리하는 객체가 된다.
이것은 DB 테이블과 매핑해서 사용하게 된다.
@Entity의 name속성을 보고 사용한 적이 있었는데, 클래스의 이름을 그대로 사용하는 것이 권장된다고 한다.
JPA에서 사용할 엔티티의 이름을 지정할 수 있다.
만약 디비 테이블의 이름이 클래스이름과 다르다면, 위 설정을 통해 이름을 별도로 설정할 수 있다.
이런 것들을 다 외울 필요까지는 없지만, 존재 여부 정도 알고 가면 좋을 것 같다.