[Java] Builder와 Accessors
반응형
Builder
어떤 객체를 생성할 때 필요한 파라미터만 골라서 설정할 수 있게 해준다.
예를 들어 아래와 같은 Item Entity가 있다고 하자.
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Enumerated(EnumType.STRING)
private ItemStatus status;
private String name;
private String title;
private String content;
private BigDecimal price;
private String brandName;
private LocalDateTime registeredAt;
private LocalDateTime unregisteredAt;
@CreatedDate
private LocalDateTime createdAt;
@CreatedBy
private String createdBy;
@LastModifiedDate
private LocalDateTime updatedAt;
@LastModifiedBy
private String updatedBy;
이 Item에 대한 객체를 생성할 때 아래와 같이 해줄 수 있다.
Item item = Item.builder()
.status(body.getStatus())
.name(body.getName())
.title(body.getTitle())
.content(body.getContent())
.price(body.getPrice())
.brandName(body.getBrandName())
.registeredAt(LocalDateTime.now())
.partner(partnerRepository.getOne(body.getPartnerId()))
.build();
※Builder로 생성할 때에는 순서도 상관쓰지 않아도 된다.
Accessors
Setter를 이용하여 객체를 생성할 때 여러줄로 하나하나 다 생성해주어야 하는 경우가 있다.
entityItem.setStatus(body.getStatus())
entityItem.setName(body.getContent())
entityItem.setTitle(body.getTitle())
entityItem.setContent(body.getContent())
entityItem.setPrice(body.getPrice())
entityItem.setBrandName(body.getBrandName())
entityItem.setRegisteredAt(body.getRegisteredAt())
entityItem.setUnregisteredAt(body.getUnregisteredAt());
@Accessors를 추가하면 아래와 같이 이어서 바로 생성해줄 수 있다.
entityItem.setStatus(body.getStatus())
.setName(body.getContent())
.setTitle(body.getTitle())
.setContent(body.getContent())
.setPrice(body.getPrice())
.setBrandName(body.getBrandName())
.setRegisteredAt(body.getRegisteredAt())
.setUnregisteredAt(body.getUnregisteredAt());
반응형
'Java' 카테고리의 다른 글
[Java]Optional 이란? (0) | 2023.06.11 |
---|
댓글