반응형
@Entity(name = "테이블명")
JPA에서 엔티티 클래스를 정의하기 위해 사용
예시
@Entity(name = "product_t")
public class ProductJPO {
private long pNum;
private String pName;
private String pCompany;
private LocalDate regDate;
private int category1;
private int category2;
private int category3;
}
repository에 등록하면 해당 멤버변수들을 대문자 기준으로 _ 소문자로 바뀌면서 테이블을 생성한다.
ex) pNum -> p_num
@Id, @GeneratedValue
기본키를 지정하고 auto increment를 할 때 사용된다.
기본키를 지정할 멤버변수 위에 작성하면됨
예시
@Entity(name = "product_t")
public class ProductJPO {
@Id
@GeneratedValue
private long pNum;
private String pName;
private String pCompany;
private LocalDate regDate;
private int category1;
private int category2;
private int category3;
}
@Builder
빌더 패턴을 사용하면 객체 생성 시 가독성과 유연성을 높일 수 있다.
예시
@Builder
public class ProductJPO {
private long pNum;
private String pName;
private String pCompany;
private LocalDate regDate;
private int category1;
private int category2;
private int category3;
}
이 entity를 사용하는 곳에서
builder(), build() 메서드를 쓸 수 있다.
@GetMapping("test")
public String test() {
ProductJPO p1 = ProductJPO.builder()
.pNum(100L)
.pName("빈센트 아몬드나무")
.pCompany("Art Company")
.build();
return "TEST";
}
.build()를 종점으로 생성자에 인자를 추가하며 생성
@ManyToOne, @ManyToMany
테이블 조인할 때 컬럼간에 다대다, 다대일 인지 현재 entity 기준으로 작성한다.
@JoinColumn(name="category1", insertable = false, updatable = false)
어떤 컬럼으로 조인할껀지 entity 기준으로 작성한다.
수정 또는 삽입 권한을 설정할 수 있다.
그리고 어떤 JPO와 조인할껀지 명시해준다.
마치 mybatis의 resultmap과 비슷하다
예시
@Entity(name = "product_t")
@Builder
public class ProductJPO {
@Id
@GeneratedValue
private long pNum;
private String pName;
private String pCompany;
private LocalDate regDate;
@Column(name = "category1")
private int category1;
private int category2;
private int category3;
@ManyToOne
@JoinColumn(name = "category1", insertable = false, updatable = false)
private Category1JPO cvo1;
}
반응형