이번 포스팅에서는 자주 사용하는 Lombok 어노테이션을 정리해봤습니다.
Annotation | 설명 |
---|---|
@NonNull | Null 값이 될 수 없다는 것을 명시합니다. NullPointerException에 대한 대비책이 될 수 있습니다. |
@Cleanup | 자동으로 close() 메소드를 호출합니다. |
@Getter/@Setter | 코드가 컴파일 될 때, Getter/Setter 메소드를 생성합니다. |
@ToString | toString() 메소드를 생성합니다. @ToString(exclude={"제외할 값"}) 처럼 원하지 않는 속성은 제외할 수 있습니다. |
@EqualsAndHashCode | 해당 객체의 equals()와 hashCode() 메소드를 생성합니다. |
@NoArgsConstructor | 파라미터를 받지 않는 생성자를 만들어 줍니다. |
@RequiredArgsConstructor | 지정된 속성들에 대해서만 생성자를 만듭니다. |
@AllArgsConstructor | 모든 속성에 대해서 생성자를 만들어 냅니다. |
@Data | @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 합쳐 둔 어노테이션입니다. |
@Value | 불변 클래스를 생성할 때 사용합니다. |
@Builder | 빌더 패턴을 사용할 수 있도록 코드를 생성합니다. |
@SneakyThrows | 예외 발생 시 Throwable 타입으로 반환합니다. |
@Syncronized | 메소드에서 동기화를 설정합니다. |
@Getter(lazy=true) | 동기화를 이용해서 최초 한번만 getter를 호출합니다. |
@Data
는 @ToString
, @EqualsAndHashCode
, @Getter
, @Setter
, @RequiredArgsConstructor
어노테이션의 묶음 입니다.
JPA
같은 ORM
을 사용 중이시라면, 조심하셔서 사용하셔야 됩니다.ORM
은 객체와 객체가 관계를 가지는 조합으로 테이블 간의 연관관계를 표현합니다. 아래와 같은 경우 부모 객체
와 자식 객체
의 toString()
에서 문제가 생깁니다.
public class Member {
private String id;
private String pw;
private Address addr;
@Override
public String toString() {
return "Member [id=" + id + ", pw=" + pw + ", addr=" + addr + "];
}
}
public class Address {
private String zipcode;
private Member member;
@Override
public String toString() {
return "Address [zipcode=" + zipcode + ", member=" + member + "]";
}
}
Member 객체의 toString()을 호출하면 Address 객체의 toString()이 호출 되면서, 다시 Member 객체의 toString()을 호출하며, 무한 반복
이 됩니다.
따라서, include/exclude 속성을 이용해서 toString() 작성 시에 포함하거나, 빼야 하지만 @Data
는 설정이 불가능합니다.
그러므로 코드가 길어져도 @Data
어노테이션은 지양하는게 좋습니다.
엔티티? JPA에서는 엔티티는 테이블에 대응하는 하나의 클래스라고 생각하시면 편합니다.엄청나게 간단한 코드와 함께 같이 보겠습니다. 엔티티 클래스 데이터베이스의 테이블 usernamepassoword - test1234 adminadmin spring-boot-starter-data-jpa 의존성을 추가하고 @Entiy 어노테이션을 붙이...
이 포스팅에서는 테스트 코드와 관련된 정보를 업데이트 해나갈 예정입니다. 스프링은 테스트 환경을 준비하려면 별도의 라이브러리를 추가하고, JUnit 등 여러 가지 신경써야 하지만 스프링 부트는 이러한 설정이 모두 자동으로 갖추어집니다. 앞으로 작성해나갈 포스팅 안의 코드들은 Github 에서 확인이 가능합니다. 프로젝트 구조 스크린샷...
이번 포스팅에서는 자주 사용하는 Lombok 어노테이션을 정리해봤습니다. 자주 쓰는 Lombok Annotations Annotation설명 - @NonNullNull 값이 될 수 없다는 것을 명시합니다. NullPointerException에 대한 대비책이 될 수 있습니다. @Cleanup자동으로 close() 메소드를 호출합니다. @Getter/...
웹 개발과 관련해서 자주 등장하는 용어들을 이 포스팅에 정리해나갈 예정입니다. 🍪 Cookie 쿠키란? 쿠키는 사용자가 사이트를 방문했을 때, 사용자의 컴퓨터에 저장되는 정보를 뜻합니다. 쿠키 구성 요소 - 이름: 각각의 쿠키 값을 식별하기 위한 키 - 값: 특정 이름으로 쿠키에 지정된 값 - 유효시간: 쿠키의 유지 시간 - 도메인...
💡 그냥 정리하는 블록체인..... 이 포스팅은 계속해서 업데이트 해나갈 예정입니다! 01. 블록체인이란? - 데이터 분산 처리 기술 입니다. - 네트워크에 참여하는 모든 사용자가 거래 와 관련된 정보를 분산, 저장 하는 기술입니다. - 블록 은 개인과 개인의 거래의 데이터가 기록되는 장부입니다. - 이런 블록이 형성된 후, 시간의 흐름에 따라 순...