PROJECT/DocViewer_Web

자바 어노테이션 정리해두기 -22.08.29

최뭉뭉 2022. 8. 29. 16:37

@Getter

=> 자동으로 Get 메소드 생성해줍니다.

 

@NoArgsConstructor

=> 파라미터가 없는 기본 생성자를 생성해줍니다.

 

@Entity

=> JPA에서 DB 테이블에 대응하는 하나의 클래스입니다.

@Entity가 붙은 클래스는 JPA가 관리해주며, JPA를 사용해서 DB 테이블과 매핑할 클래스는 @Entity를 꼭 붙여야만 매핑이 가능합니다.

 

@Id

=> 기본 키 직접 할당

 

@GeneratedValue(strategy = GenerationType.IDENTITY)

@GeneratedValue(strategy = GenerationType.IDENTITY)

=> 기본 키 생성을 데이터베이스에 위임
즉, id 값을 null로 하면 DB가 알아서 AUTO_INCREMENT 해준다.

 

@ManyToOne(fetch=FetchType.EAGER)

@ManyToOne(fetch = FetchType.EAGER)

=> 클래스와 다대일 관계로 매핑되어있는 상태에서 즉시 로딩을 사용한다.

지연 로딩 : FetchType.LAZY

즉시 로딩을 많이 사용하면 조인이 다수 발생해서 예상치 못한 SQL이 발생하기 때문에 실무에서는 거의 지연  로딩을 사용한다.

 

 

@JoinColumn

=> 외래키 매핑시 사용하며 name 속성에는 매핑할 외래키 이름을 지정해줍니다.

FK를 관리하는 객체가 @JoinColumn을 사용하고 연관관계의 주인이 됩니다.

 

 

 

@Column

@Column은 객체 필드 테이블의 컬럼에 매핑시켜주는 어노테이션입니다.

 

 

 

 

@Lob

데이터베이스의 BLOB, CLOB 타입과 매핑합니다.

@Lob에는 지정할 수 있는 속성이 없습니다.

대신에 매핑하는 필드 타입이 문자 CLOB이고, 나머지 BLOB으로 매핑됩니다.

(Lob은 Large Object의 줄임말입니다)

CLOB : 문자 대형 객체,
BLOB : 이진 대형 객체 (이미지, 동영상 등등)

@Lob 주석은 @Basic 혹은 @ElementCollection 과 함께 사용할 수 있습니다.

 

 

 

@Builder

객체 생성에서 주입하는 것에 대한 방식으로 빌더 패턴을 사용하면 각 인자에 대한 파라미터 주입이 명확해집니다

파라미터가 많을 경우 가독성을 올려줍니다.

@Builder
public Event(Long id, String title, String content, char deleteYn, User user){
    this.id = id;
    this.title = title;
    this.content = content;
    this.deleteYn = deleteYn;
    this.user = user;
}

 

 

 

 

<참고 링크>

https://data-make.tistory.com/611

 

[JPA] 연관관계 매핑이란.?

| 연관관계 매핑 객체의 참조와 테이블의 외래 키를 매핑 방향 (Direction) : 단방향, 양방향 방향은 객체관계에만 존재하고 테이블 관계는 항상 양방향 다중성 (Multiplicity) : 다대일, 일대다, 일대일

data-make.tistory.com

https://clack2933.tistory.com/23#%EC%9D%BC%EB%8C%80%EB%8B%A4

 

06 연관관계 Mapping 종류

다중성과 연관관계 종류 N : 1 (다대일) @ManyToOne 1 : N (일대다) @OneToMany 1 : 1 (일대일) @OneToOne N : M (다대다) @ManyToMany 다대일 현재 객체는 하나의 객체를 참조할 수 있는 구조 1, 단방향 @Entity..

clack2933.tistory.com

https://ttl-blog.tistory.com/114

 

[JPA] 필드와 컬럼 매핑 - @Column

@Column @Column은 객체 필드를 테이블의 컬럼에 매핑시켜주는 어노테이션입니다. 속성 속성 기능 기본값 name 필드와 매핑할 테이블의 컬럼 이름을 지정한다. 객체의 필드 이름 insertable (거의 사용하

ttl-blog.tistory.com

https://pamyferret.tistory.com/67

 

빌더 패턴(Builder pattern)을 써야하는 이유, @Builder

빌더 패턴(Builder pattern)이란? 객체를 정의하고 그 객체를 생성할 때 보통 생성자를 통해 생성하는 것을 생각한다. Bag bag = new Bag("name", 1000, "memo"); 하지만 생성자를 통해 객체를 생성하는데 몇 가

pamyferret.tistory.com