Spring IntellIJ (테이블 만들기 Entity)

HI_DO·2024년 10월 21일

테이블을 만들고 싶다면 JPA에서는 @Entity클래스를 만들면 자동생성된다.
테이블을 만들때는 테이블에 어떤 컬럼이 들어갈지도 먼저 정해야한다.

Item.java

package com.apple.shop;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Item {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id;
    String title;
    Integer price;
}

컬럼용 변수에는 int 말고 Integer를 강요한다
(int/Integer는 20억까지 저장가능하다.)
id 컬럼에는 @Id를 사용해야한다.
@GeneratedValue를 사용하면 id를 알아서 1씩 증가 시켜준다.(정확히는 @GeneratedValue(strategy = GenerationType.IDENTITY) 이다)

  • SQL을 잘 아는 것처럼 보이려면 @Id는 primary key로 설정해주는 역할이고 @GeneratedValue는 auto increment 기능이라고 말한다.

이제 실행을 해주고 잘 됬는지 확인하기 위해 DBeaver에서 확인한다.

짠! 모두 잘 나왔다!
이제 상품 몇개를 넣어보자

아래의 row추가 버튼을 클릭한다
이제 하나하나 입력해주면 된다.
근데 이게 귀찮다고한다면

상단의 SQL을 누른 후

이렇게 입력해주고 실행버튼 누르면 된다.
(실행버튼은 저 주문서 같은 아이콘)

짠! 3개 모두 추가되었다!

한가지 추가할게 생겼다.
아까 Entity코드 안의 변수에 public을 붙여준다.

Item.java

package com.apple.shop;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Item {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long id;
    public String title;
    public Integer price;
}

이유는 public이 없으면 같은 폴더내의 클래스에서만 사용가능하기 때문에 다른 모든 클래스에서 문제없이 사용 가능하려면 public을 붙여준다.

이제 @Column()으로 컬럼에 제약설정을 해보자

    public String title;

저기 'nullable = false'라는 것은 '이 컬럼이 비어있으면 테이블에 입력을 막아달라' 라는 의미다.
'unique = true'은 '이 컬럼값이 유니크하지 않으면 테이블 입력을 막아달라' 라는 의미다.
추가로 'columnDefinition = "TEXT"'는 컬럼타입을 강제로 지정이 가능하다.
이처럼 @Column 에너테이션을 사용하면 이렇게 제약설정을 할 수 있다.

  • 참고사항: 컬럼설정 변경사항은 DB에 반영이 자동으로 안될 수도 있다.
profile
하이도의 BackEnd 입문

0개의 댓글