<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency>
@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)public class MUser{//Entity 설계..}
Getter를 자동으로 만들어준다.
Setter를 자동으로 만들어준다.
파람이 없는 생성자를 만들어준다. PROTECTED로 해야 외부에서 접근이 불가능하다.
모든 파람이 있는 생성자를 만들어준다.
@Builderpublic MUser(String email, String pw, String name, String phone, int isEnabled, int isDeleted,Date createStamp, Date modifyStamp, String modifier) {this.email = email;this.pw = pw;this.name = name;this.phone = phone;this.isEnabled = isEnabled;this.isDeleted = isDeleted;this.createStamp = createStamp;this.modifyStamp = modifyStamp;this.modifier = modifier;}
생성자 앞에 붙여 builder를 쓸 수 있게 해준다.
아래 경우처럼 생성자에 안쓰고 클래스 자체에 쓸 수도 있다.
@Entity@Table(name="muser")@Data@AllArgsConstructor@NoArgsConstructor@Builder@ToStringpublic class MUser{
Getter, Setter를 자동으로 만들어준다.
toString을 오버라이드해준다.
@Temporal(TemporalType.TIMESTAMP)
이 기본값이며 DATE, TIME, TIMESTAMP를 사용할 수 있다.
엔티티 안에 다른 도메인을 넣을 떄 엔티티 내 필드 위에 선언함.
다른 엔티티에 들어가는 도메인 클래스 위에 선언함.
Outline에 적용된 결과를 볼 수 있다.
로그인에 필요한 유저를 다음과 같이 정의하였다.
@Entity@Table(name="muser")@Data@AllArgsConstructor@NoArgsConstructor@Builder@ToStringpublic class MUser{@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(nullable=false, length=40)private String email;@Column(nullable=false, length=40)private String pw;@Column(nullable=false, length=60)private String name;@Column(nullable=false, length=13)private String phone;@Column(length=40)private String role = "user";@Column(length=1)private int isEnabled = 1;@Column(length=1)private int isDeleted = 0;@Column@Temporal(TemporalType.TIMESTAMP)protected Date createStamp = new Date();@Column@Temporal(TemporalType.TIMESTAMP)protected Date modifyStamp = new Date();@Column(length=40)private String modifier;}
아래 코드는 MUser user = new MUser();
와 같은 기능을 수행한다.
MUser user = MUser.builder().build();
아래 코드는 `MUser user = new MUser(); user.setEmail("test@naver.com");`와 같은 기능을 수행한다.MUser user = MUser.builder().email("test@naver.com").bulid();
위에서 기본값을 정의했지만 build할때 값을 안넣으면 값이 들어가있지 않는데 기본값을 무조건 넣도록 하려면 엔티티에서 @Builder.Default
를 선언해줘야 한다.
@Column(length=1)@Builder.Defaultprivate int isEnabled = 1;