Entity의 기본 속성(메서드)

Lumi·2021년 7월 21일
0

JPA

목록 보기
5/11
post-thumbnail

Entity의 기본속성(annotation)
도메인의 객체

@Entity : 해당 객체가 관리하고 있는 Entity객체라고 정의
-> 단순히 표시해주는것을 의미

@Id : PK를 표시해 주는 어노테이션

특정한 부가적인 설정이 필요없다면 위 두가지만 설정해주면 쿼리메서드를 사용가능하다.

@GeneratedValue : PK값을 위해 자동 생성 전략을 설정해준다.
-> PK의 값이 null이면 자동으로 값을 증가시켜 준다.
-> 또한 null이 아니라도 자동으로 값을 1씩 증가시켜 준다.

@Table : 일반적으로는 설정할 필요가 없지만 필요할떄에는 사용한다.

  • (name = "user_legacy") 를 설정해주면
    -> Entity설정한 객체의 이름을 user_legacy로 변경하여 생성해준다.
    -> 일반적으로는 이름이 동일한 것이 가장 좋다.

@Column : class의 field변수에 사용할수 있는 어노테이션

  • Table와 같이 name을 지정 가능(역할을 동일)
  • (nullable = true/false)
    -> false일 경우에 값이 반드시 들어와야 한다(true가 default 값)
  • (updatable = false)
  • (insertable = false)
    -> 값이 바뀔때 해당 값을 저장할지 안할지를 결정한다.

이 부분은 이해가 잘 안될수 있으니 다시 설명을 해보자면
1. PK값이 1인 어떤 정보가 있다.
2. PK의 값은 유지하는데 그 어떤 정보를 수정하고자 한다.
3. 어떤 정보에는 A,B,C,D 라는 정보가 있는데
4. A라는 정보만을 수정(예를들면 name, email 등등)
5. 이떄 updatable, insertable를 사용하면 굳이 호출하여 확인하지 않을수 있다.
--> B,C,D에 메서드를 적용하면 저장 및 호출 할떄 A만을 호출한다.
---> 솔직히 왜 사용하는지 모르겠다;; 아마도 시스템의 효율이 좋아지기 떄문에 사용하는것이 아닌가 라고 생각한다.

Entity가 설정된 객체(class)는 DB의 값을 그대로 받아서 사용이 된다.
하지만 기본적으로 class이기 떄문에 별개의 데이터를 설정하여 사용할수 있다
이떄 사용하는 어노테이션이
@Transient : DB에 반영되지 않는 객체를 만들어 준다(영속성을 반영하지 않는다.)
-> Entity 실행시에 호출이 되지 않는다.
-> 따로 구속을 받지 않는 변수를 만들어 준다고 생각하면 될꺼같다.

Enum : class의 타입으로 선언할수가 있다.
-> java에서는 일종의 상수객체로 사용이 된다.
Enum을 사용하게 되면 DB에서는 순서에 따른 숫자로 저장되기 떄문에
Enum변수를 사용할떄에는
@Enumerated(value = EnumType.STRING)을 지정해주어야 한다.

위 내용은 어떤 내용인지는 이해는 갔지만 어떻게 설명을 해야할지 모르겠으니
혹시 추가적으로 궁금하다면 구글링을 해볼 생각이다.

==> 결과적인 설명을 해보자면 enum 타입에
@Enumerated를 추가해 주어야 오류를 줄일수 있다고 이해하면 될꺼같다.

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글