- @Entity
- JPA에서 엔티티란, DB 테이블에 대응하는 하나의 클래스라 생각
@Entity가 붙은 클래스는 JPA가 관리해주며,
JPA를 사용해서 DB 테이블과 매핑할 클래스는 @Entity를 꼭 붙여야만 매핑가능
- @Entity(name = "Member")
: JPA에서 사용할 엔티티의 이름을 지정
보통은 기본값인 클래스 이름을 사용하지만, 다른 패키지에 이름이 같은 엔티티 클래스가 있다면 이름을 지정해서 충돌하지 않도록 해야함
- @Entity를 사용할 때의 몇가지 주의사항
: 접근 제어자가 public 혹은 protected 인 기본 생성자가 필수입니다.
: final 클래스, enum, interface, inner 클래스에는 사용이 불가능합니다
- @Table
@Table( name = "MEMBER")
- 엔티티와 매핑할 테이블을 지정
- @Builder
Lombok에서 @AllArgsConstructor, @NoArgsConstructor @Data를 활용해서 생성자를 편리하게 사용할 수 있음
- @NoArgsConstructor 어노테이션은 파라미터가 없는 기본 생성자를 생성
- @AllArgsConstructor 어노테이션은 모든 필드 값을 파라미터로 받는 생성자를 만듬
- @RequiredArgsConstructor 어노테이션은 final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만듬
하지만, @AllArgsConstructor의 경우 모든 필드를 차례로 담아야한다.
단점을 보완하기위해 @Builder를 사용
1) 필드의 순서에 상관없이 객체를 생성할 수 있다.
2) 원하는 필드만 파라미터로 객체를 생성할 수 있다.
- @Accessors(chain=true)
@Setter를 이용해서 객체를 생성할 때에는 아래와 같이 여러 줄로 setMethod를 생성해야하는 단점이 있음
이러한 단점을 보완하기위해 @Accessors(chain=true)를 사용
1) 일일이 setMethod를 여러 줄로 생성할 필요 없이 Chain형태로 이어서 원하는 setMethod를 생성할 수 있다.
@Accessors(chain=true)는 Setter를 메서드 체인 역할을 해줍니다. (빌더패턴을 이용)
ex) user.setEmail().setAccount()....이런식으로 연쇄적로 사용 가능.
- @Data
- @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode을 한꺼번에 설정해주는 매우 유용한 어노테이션
(ex) 역할의 자동적으로 Getter/Setter를 만들어주는 역할)
- 이 어노테이션을 사용하면, 모든 필드를 대상으로 접근자, 설정자가 자동 생성되고,
final 또는 @NonNull 필드 값을 파라미터로 받는 생성자가 만들어지고,
toString, equals, hashCode 메소드가 자동으로 만들어진다.
- @ToString
toString() 메소드를 작성하는 일도 @ToString어노테이션만 붙여주면 자동으로 생성해 준다
@ToString(exclude = "id")와 같이 exclude를 사용하면 toString() 결과에서 id를 제외시킬 수 있다.
- @EqualsAndHashCode
equals, hashCode 자동 생성
equals : 두 객체의 내용이 같은지, 동등성(equality) 를 비교하는 연산자
hashCode : 두 객체가 같은 객체인지, 동일성(identity) 를 비교하는 연산자
자바 bean에서 동등성 비교를 위해 equals와 hashcode 메소드를 오버라이딩해서 사용하는데,
@EqualsAndHashCode어노테이션을 사용하면 자동으로 이 메소드를 생성할 수 있다.
@EqualsAndHashCode(callSuper = true)로 설정시 부모 클래스 필드 값들도 동일한지 체크하며,
false(기본값)일 경우 자신 클래스의 필드 값만 고려한다.
- @IdClass
- 복합키가 존재하는 Entity에 @IdClass Annotation을 추가해주고, 복합키를 설정할 class명을 정해준다.
또한, 복합키로 지정할 컬럼에 @Id Annotation을 추가한다.
- @IdClass를 사용해서 복합 Primary Key 적용하기
- DB를 설계하다 보면 PK가 여러 개가 되는 경우가 종종 발생.
그럴 때는 Primary Key에게 모두 @Id 어노테이션을 주면 되는데, 무작정 어노테이션을 붙이면 오류를 출력하게 됨
이때 @IdClass를 사용하게 되면 복합키 매핑 가능
- ex)
@IdClass(UserAuthority.class)
public class UserAuthority extends BaseTimeEntity implements GrantedAuthority {
@Id
private Long userId;
@Id
private String authority;
}
'DB' 카테고리의 다른 글
[DataBase] 각 DataBase 각각 컬럼별 연결 (0) | 2023.07.12 |
---|---|
[JPA DataBase] JPA를 이용하여 테이블 만들기 (application.yml) (0) | 2023.07.11 |
[DataBase] appliction.yml database 설정 방법 (0) | 2023.07.11 |
[DataBase 관련] BaseTimeEntity (0) | 2023.07.11 |
[SQL] MyBatis 에서 insert 시 자동 생성키 - MySQL (0) | 2022.05.20 |