기본테이블 만들기
@Entity : 개체. 이 주석으로 해당 클래스가 테이블이라는 것을 알 수 있다.
@Getter : vo의 Getter
@Setter : vo의 Setter
@ToString : vo의 ToString
@NoArgsConstructor : 파라미터가 없는 생성자
@AllArgsConstructor :파라미터가 있는 생성자
@Id : primary key 값
package com.example.demo.member;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Entity
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class shopmember {
@Id
private String id;
private String pwd;
private String name;
private String email;
private int type;
}
다른 테이블과 Join 되는 테이블 만들기
@ManyToOne : 현재 테이블과 조인될 테이블의 관계
- 다른 조인 관계는 OneToMany , OneToOne, ManyToMany 등이있다.
@JoinColumn(name="컬럼이름", nullable=false or ture) : 어떤 컬럼과 조인 할 것인지 null을 허용 할 것인지 선택한다. nullable을 선택하지 않으면 true가 기본으로 설정 된다.
@OnDelete(action = OnDeleteAction.CASCADE) : 삭제 될 시 어떤 조건으로 함께 삭제 될 것인지. 작성 하지 않으면 삭제되지 않는다. 다른 방법으로는@OnDelete(action = OnDeleteAction.SET_NULL) 이 있다. SET_NULL은 내용이 있지만 컬럼은 ? 로 대체 된다.
@주석 작성이 끝나면 조인 될 컬럼의 타입을 조인될 테이블의 이름으로 설정해준다. ex) private shopmember seller;
package com.example.demo.shop;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;
import com.example.demo.member.shopmember;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.SequenceGenerator;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Entity
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class shop {
@Id
@SequenceGenerator(name="seq_gen", sequenceName="seq_shop", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_shop")
private int num;
private String product;
private String content;
private int price;
private int qty;
@ManyToOne
@JoinColumn(name="seller", nullable=false)
@OnDelete(action = OnDeleteAction.CASCADE)
private shopmember seller;
'spring 스프링' 카테고리의 다른 글
REST API 개념 (0) | 2023.05.23 |
---|---|
JPA 오라클 테이블 생성 시 자동 할당 및 기타 @어노테이션 (0) | 2023.05.20 |
[spring] 스프링 기초 설정 (0) | 2023.05.18 |
[Spring] JPA (Java Persistence API) (3) | 2023.05.18 |
[MyBatis] DAO 인터페이스 만들기 (2) | 2023.05.15 |