[Spring] Entity

thingzoo·2023년 6월 26일
0

Spring

목록 보기
23/54
post-thumbnail

Entity

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

Entity Annotation

@Entity // JPA가 관리할 수 있는 Entity 클래스 지정
@Table(name = "memo") // 매핑할 테이블의 이름을 지정
public class Memo {
    @Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // nullable: null 허용 여부
    // unique: 중복 허용 여부 (false 일때 중복 허용)
    @Column(name = "username", nullable = false, unique = true)
    private String username;

    // length: 컬럼 길이 지정
    @Column(name = "contents", nullable = false, length = 500)
    private String contents;
}
  • @Entity : Entity 클래스로 지정
    • @Entity(name = "Memo") : Entity 클래스명 지정(default: 클래스명)
    • 기본 생성자 필요
      • JPA가 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 : 테이블의 PK 지정
    • 영속성 컨텍스트에서 Entity를 구분하고 관리할 때 사용되는 식별자 역할 수행
    • PK없으면 오류 발생
    • @Id 옵션만 설정하면 PK값을 개발자가 직접 확인하고 넣어줘야함
  • @GeneratedValue: 기본 키 생성을 DB에 위임
    • @GeneratedValue(strategy = GenerationType.IDENTITY)
      • id bigint not null auto_increment : auto_increment 조건이 추가됨
      • 개발자가 직접 id 값을 넣어주지 않아도 자동으로 순서에 맞게 PK값 추가됨
profile
공부한 내용은 바로바로 기록하자!

0개의 댓글