JPA

[JPA] Entity

개발 공주 2023. 7. 9. 14:51
728x90

Entity

Entity란?

  • JPA에서 관리되는 클래스 즉, 객체를 의미함.
  • Entity 클래스는 DB의 테이블과 매핑되어 JPA에 의해 관리됨

Entity 어노테이션

  • @Entity : JPA가 관리할 수 있는 Entity 클래스로 지정할 수 있다.
    • @Entity(name = "Memo") : Entity 클래스 이름을 지정할 수 있다. (default: 클래스명)
    • JPA가 Entity 클래스를 인스턴스화 할 때 기본 생성자를 사용하기 때문에 반드시 현재 Entity 클래스에서 기본 생성자가 생성되고 있는지 확인해야 한다.
  • @Table : 매핑할 테이블을 지정해줍니다.
    • @Table(name = "memo") : 매핑할 테이블의 이름을 지정할 수 있다. (default: Entity 명)
  • @Column :
    • @Column(name = "username") : 필드와 매핑할 테이블의 컬럼을 지정할 수 있다. (default: 객체의 필드명)
    • @Column(nullable = false) : 데이터의 null 값 허용 여부를 지정할 수 있다. (default: true)
    • @Column(unique = true) : 데이터의 중복 값 허용 여부를 지정할 수 있다. (default: false)
    • @Column(length = 500) : 데이터 값(문자)의 길이에 제약조건을 걸 수 있다. (default: 255)
  • @Id : 테이블의 기본 키를 지정해줍니다.
    • 이 기본 키는 영속성 컨텍스트에서 Entity를 구분하고 관리할 때 사용되는 식별자 역할을 수행한다.
      • 따라서 기본 키 즉, 식별자 값을 넣어주지 않고 저장하면 오류가 발생한다.
    • @Id 옵션만 설정하면 기본 키 값을 개발자가 직접 확인하고 넣어줘야 하는 불편함이 발생한다.
  • @GeneratedValue 옵션을 추가하면 기본 키 생성을 DB에 위임할 수 있다.
    • @GeneratedValue(strategy = GenerationType.IDENTITY)
    • 해당 옵션을 추가해주면 개발자가 직접 id 값을 넣어주지 않아도 자동으로 순서에 맞게 기본 키가 추가된다.
    • IDENTITY 말고도 어려가지 전략이있음

'JPA' 카테고리의 다른 글

[JPA] 쓰기 지연 저장소  (0) 2023.07.09
[JPA] 1차 캐시  (0) 2023.07.09
[JPA] 트랜잭션  (0) 2023.07.09
[JPA] 영속성 컨텍스트  (0) 2023.07.09
[JPA] JPA란?  (0) 2023.07.09