자바 및 spring boot

프로젝트 설정

dani717 2021. 9. 14. 13:52
  • 엔티티 어노테이션

1-1. @Entity(name = “테이블명“)

@Entity(name = "AUTH_GROUP_DANGI")

public class AuthGroupDangi { ... }

----------------------------------------------------

@Entity

@Table(name = "AUTH_GROUP_DANGI") 으로 하지 않는다!!

이 부분은 Repository에서 @Query 어노테이션 사용하여 JPQL 작성할때 연관된 것으로,

둘 중 어느 것으로 해도 상관은 없으나 프로젝트에 통일성을 주기 위해 @Entity(name = “테이블명“) 으로

 

1-2. 엔티티 상단에 @Setter 는 되도록 작성하지 않는다.

데이터 수정이 필요할 경우 엔티티 내에 커스텀 메소드를 추가하여 값을 변경해준다.

public void updateEntity( Long id, String value, Object obj, ... ) {

    this.id = id;

    this.value = value;

       this.custom = obj.get('custom');

    ....

}

 

2. PK 컬럼 어노테이션과 데이터타입

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Column(name = "auth_group_dangi_id")

private Long authGroupDangiId;

 

2-1. @GeneratedValue 어노테이션에 (strategy = GenerationType.IDENTITY) 를 꼭 붙여준다.

기본값은 AUTO 이다. 이 값은 DB 종류에 따라 시퀀스를 생성하게 될 수도 있다.

그러므로 PK 가 auto_increment 이면 IDENTITY를 붙여줘야 한다.

 

2-2. PK의 데이터 타입은 Long 으로 한다.

auto_increment 계속해서 증가하는 값이다.

데이터가 많아지면 Integer 데이터 형보다 길이가 길어질 수 있으므로 미리 Long으로 하자. (JPA 관례적으로 PK에 Long을 많이 쓴다)

 

3. 컬럼 명

@Column(name = "user_id")

private String userId;

자바의 변수명은 카멜케이스 표기법을 사용하고, 컬럼맵핑은 @Column 어노테이션의 name으로 지정해준다.

repository에서 findByUserIdAnd~~~() 를 자유롭게 쓰기 위함이다.

 

4. enum 지정

package kr.co.dangi.mango.commons.enums;

 

public enum UseYn {

    Y, N

}

 

@Column(name = "use_yn")

@Enumerated(EnumType.STRING)

private UseYn useYn;

enum 을 만들고, 엔티티 데이터 타입에 지정해준다.

그리고 @Enumerated(EnumType.STRING) 를 꼭 붙여준다.

@Enumerated 의 기본값이 EnumType.ORDINAL 인데, 이것은 Enum의 순번이 데이터로 저장된다. (예 : Y는 1로 N은 2로 저장)

나중에 enum 추가될때 순번이 바뀔 있고 망고에서는 기본적으로 enum 스트링으로 저장하고 있으므로 STRING으로 지정한다.