JPA 객체 생성 & Column 타입 매핑

KMS·2022년 4월 1일
0

JPA Basics

목록 보기
2/20

MySQL의 Member 테이블과 연결되는 Member 객체 생성

@Entity //JPA를 사용한다고 알려주는 애노테이션
@Table(name = "member") // 클래스 이름이랑 테이블 이름이 같으면 생략 가능
public class Member {
    @Id // PK(Primary Key) 인것을 알려줌
    @Column(name = "id") // 변수 이름이랑 column name 이랑 같으면 생략 가능
    private Long id;

    @Column(name = "name", nullable = false, updatable = true, length = 10) //updatable=true가 DEFAULT; false로 하면 JPA에서 해당 column의 값 수정 X
    private String username;

    private Integer age;

    @Enumerated(EnumType.STRING) //무조건 EnumType.STRING을 쓰도록 주의
    private RoleType roleType;

    @Temporal(TemporalType.TIMESTAMP)
    private Date createdDate;

    @Temporal(TemporalType.TIMESTAMP)
    private Date lastModifiedDate;

    @Lob
    private String description;

    public Member() {

    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public RoleType getRoleType() {
        return roleType;
    }

    public void setRoleType(RoleType roleType) {
        this.roleType = roleType;
    }

    public Date getCreatedDate() {
        return createdDate;
    }

    public void setCreatedDate(Date createdDate) {
        this.createdDate = createdDate;
    }

    public Date getLastModifiedDate() {
        return lastModifiedDate;
    }

    public void setLastModifiedDate(Date lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}
  • @Entity가 붙은 클래스는 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수
  • 객체의 이름이 MySQL에서의 테이블과 이름이 다르면 @Table 애노테이션으로 연결해줄 수 있음
  • 테이블에서의 Column들과 이름이 매칭되도록 객체에서의 변수 이름 설정. 이름이 다르면 @Column 애노테이션으로 연결 시켜줄 수 있음
  • @Column: name, updatable, nullable, length, unique 등 설정 가능. Updateable을 false로 하면 JPA에서 해당 column을 수정하지 못함
  • @Id 애노테이션으로 PK 인것을 알려줄 수 있음
  • @Enumerated:자바 enum 타입을 매핑할 때 사용. EnumType.ORDINAL 사용X => DB에 Enum 값을 저장하는게 아니라 Enum의 순서를 저장하기 때문에 값을 조회하기도 어렵고, Enum 값이 수정, 추가, 제거 되면 어떤 Enum 값을 지칭하는지 알 수 없음. 무조건 EnumType.STRING을 사용 하도록. EnumType.STRING을 사용하면 Enum 값 그대로 DB에 저장
  • @Transient: 필드 매핑X, 터베이스에 저장X, 조회X => 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용
profile
Student at Sejong University Department of Software

0개의 댓글