Spring Boot

< Spring Boot > Entity

98kg 2023. 8. 25. 12:25

 

Entity 란 ?

 

 

 쉽게 하나의 테이블 명이될 클래스라고 생각하면 되며

 entity 는 DB 의 table 입니다.

DB 의 내용이 바뀌면 entity 의 내용도 바뀌며,

따라서 entity 에는 select, delete, update 만 담당하게 되어있습니다.

간단한 설명 다음에 코드를 보여드리겠습니다.


Entity 생성에 사용되는 Annotation


  • @Entity : JPA 에서 실제 DB의 테이블과 매칭 될 class 임을 명시하는 어노테이션
  • @Table : Entity 테이블에 매핑할 테이블 정보를 알려주는 어노테이션
                  속성으로 name 을 갖는데, 이값을 주면 값으로 테이블이 생성됩니다.
                  default 는 entity 클래스 이름과 같은 이름으로 매칭됩니다.
  •  @ID : JPA 에서는 기본적으로 모든 테이블에 PK 를 주도록 정의합니다.
               따라서 이 어노테이션을 주게되면 해당 컬럼이 자동으로 PK 지정됩니다.
               일반적으로 자바 Number 타입을 사용하는데 , 필요하다면 문자열도 PK 지정됩니다.
               참고로 부트에서는 나중에 배울 Stream(IO 아님) 을 많이 사용하기 때문에
               pType 의 넘버 보다는 Wrapper 타입으로 사용하는게 일반적입니다.
  • @GeneratedValue  : 코드와 함께 주석으로 설명해드리겠습니다.

 

 


 

 

@Entity
@Table(name = "tb_memo") --> entity 명(테이블 이름) 설정
@ToString // name을 출력
@AllArgsConstructor
@NoArgsConstructor
 
public class Memo {
    
   
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long mno;
    
    @Column(length = 100, nullable = false)
    private String memoText;
}
@GeneratedValue(strategy = GenerationType.AUTO)
    private Long mno;
    
    @Column(length = 100, nullable = false)
    private String memoText;

 

  • @GeneratedValue : 컬럼의 PK 를 지정 시에, PK 의 번호를 자동으로 지정하는 어노테이션 입니다.                                                               속성으로는 여러가지가 있는데, 주체가 누가되는지를 결정하는 값입니다.
                                     테이블에서와 하이버네이트에서  다양한 값을 설정 할 수 있습니다.
  • @Column : 컬럼을 나타내며 PK 가 아닌 다른 컬럼을 지정할 때 사용합니다.
                        만약 선언하지 않으면, 모든 필드는 자동으로 타입에 맞게 컬럼으로 생성됩니다.
                        그럼 왜 쓸까요??? 이유는 컬럼의 속성을 지정 할 때 사용되기 때문입니다.
                        예를 들자면, Not Null, 문자열 길이 등 따로 지정 할 때 사용합니다. 
       
          
        

 키 생성 전략 설명


  •  auto(default) : 하이버네이트가 생성해서 부여한다.
  • identity : DB에서 직접 부여한다. Maria 인 경우엔 auto_increament 가 지정됨
  • sequence : 오라클 등에서 사용하는 시퀀스 객체가 지정한다.                                                                                                            이때는  @sequenceGenerator 와 같이 사용해야한다.