Spring 15. Entity

김창민·2024년 8월 16일

BE

목록 보기
35/50

Entity

- JPA에서 관리되는 객체(클래스)임.
- Entity 클래스는 DB 테이블과 매핑되서 JPA에 의해 관리됨

Entity 클래스 생성법

@Entity // JPA가 관리할 수 있는 Entity 클래스 지정
    @Table(name = "memo") // 매핑할 테이블의 이름을 지정
    public class Memo {
        @Id
        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 어노테이션 사용을 통해 JPA가 관리할 수 있는 Entity 클래스로 지정이 가능하다.
    • @Entity(name=”Memo”)처럼 이름이 지정이 가능하다. 옵션 미사용시 클래스명으로 명명됨.
    • JPA가 Entity를 인스턴스화 할때 기본 생성자를 사용하므로 기본 생성자가 필수임
  • @Table
    • 매핑 대상 테이블임. name미작성시 엔티티명으로 자동 매핑
  • @Column
    • name : 필드와 매핑할 테이블의 컬럼을 지정
    • nullable : 데이터의 null 값 허용 여부 지정
    • unique : 중복 값 허용 여부 지정
    • length : 데이터의 길이에 제약
  • @Id
    • 테이블의 기본 키 지정
    • 필수 어노테이션임
    • @GeneratedValue 옵션
      • 옵션 미사용시 개발자가 키를 넣어줘야함
      • 옵션 사용시 기본 키 생성이 DB에 위임됨
      • `@GeneratedValue(strategy = GenerationType.IDENTITY)`
        • 개발자가 id를 넣어주지 않아도 자동으로 순서에 맞게 기본키가 추가됨

상태

  • Transient (비영속)
  • Managed (영속)
  • Detached (준영속)
  • Removed (삭제)
  • Transient (비영속)
    • Memo memo = new Memo(); // 비영속 상태
    • 아직 persist로 영속성 컨텍스트에 저장안됨
  • Managed (영속)
    • em.persist(memo);
    • 비영속 객체를 영속성 컨텍스트에 저장함
  • Detached (준영속)
    • 영속이였다가 분리된 상태
      • detach
        • em.detach(memo);
        • memo Entity는 준영속 상태로 전환됨.
      • clear
        • em.clear();
        • 영속성 컨텍스트의 모든 Entity를 준영속으로 전환함.
        • 사실상 내용 초기화
      • close
        • 영속성 컨텍스트 종료
    • merge(Entity)
      • em.merge(memo);
      • 준영속 상태를 다시 영속시킴
      • DB에 해당 Entity가 없으면 생성해서 저장함
      • 즉, 생성 수정 다 됨
  • Removed (삭제)
    • em.remove(memo);
    • 영속 상태의 Entity를 파라미터로 전달받아 삭제 상태로 전환함
profile
일일 회고 : https://rlackdals981010.github.io/

0개의 댓글