JPA는 자바 객체와 데이터베이스 테이블을 매핑하는 ORM(Object Relational Mapping) 기술입니다.
-클래스가 jpa 엔티티임을 나타냄.
-이 클래스는 데이터베이스 테이블에 매핑되며, jpa가 이 클래스와 관련된 crud 작업을 처리할 수 있게 함
-매핑될 데이터베이스 테이블의 이름을 지정
-default는 클래스 이름
-해당 필드가 엔티티의 기본 키임을 나타냄
-기본 키 값을 자동으로 생성해줌
-GenerationType.IDENTITY: 데이터베이스의 auto-increment 기능을 사용해 id를 자동 생성
-클래스의 필드가 데이터베이스 테이블의 컬럼과 어떻게 매핑될지 지정
-name:매핑할 데이터베이스 컬럼의 이름을 지정
-nullable:해당 컬럼이 null을 허용하는지 여부 지정
-length:varchar와 같은 문자열 컬럼에서 최대 길이를 지정
열거형(enum) 타입을 데이터베이스에 저장할 때 사용됩니다. EnumType.STRING은 열거형의 이름을 문자열로 저장하겠다는 의미입니다. (예: NORMAL, ADMIN 등)
엔티티 간의 관계가 다대일(N:1)임을 나타냅니다. 예를 들어, Document는 여러 Comment와 연결될 수 있지만, 각 Comment는 하나의 Document에 속합니다.
엔티티 간의 관계가 일대다(1)임을 나타냅니다. mappedBy 속성은 참조하는 상대 엔티티에서 매핑할 필드명을 지정합니다. 즉, 이 필드에 의해 양방향 관계가 설정됩니다. 예를 들어, User가 여러 Document를 작성할 수 있고, Document는 하나의 User에 속할 때 사용됩니다.
외래 키를 명시적으로 지정할 때 사용됩니다. 예를 들어, Document 클래스에서 user_id라는 컬럼을 외래 키로 설정할 때 사용합니다.