728x90
프로젝트를 진행하면서 가장 먼저 준비되어야 할 회원 가입 기능을 만들어보도록 하겠습니다.
제공받은 ERD를 참고하여 entity 먼저 만들어보겠습니다.
Entity
UserEntity
@Entity(name = "USERS")
@AllArgsConstructor
@NoArgsConstructor
@Getter @Builder
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class User extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String password;
@Enumerated(EnumType.STRING)
@Column(name = "USER_ROLE")
private UserRole userRole;
@Column(name = "USER_NAME")
private String userName;
}
UserEntity를 만들어서 ERD에 있는 Column들을 모두 생성하였습니다.
Entity의 name이 user인 경우 에러를 발생하는 경우가 있어서 @Entity(name = "USERS")로 S를 추가하여 테이블을 생성하도록 구성하였습니다.
그리고 각 ERD 테이블마다 공통된 컬럼들이 존재하기 때문에 BaseEntity를 만들어서 관리하려고 합니다.
BaseEntity
@Getter
@Setter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@ToString
public abstract class BaseEntity {
/* 사용할 일이 없으므로 설계상 추상클래스로 만드는 것이 실수를 방지할 수 있다 */
@CreatedDate
@Column(updatable = false)
private LocalDateTime registeredAt;
@LastModifiedDate
private LocalDateTime updatedAt;
private LocalDateTime deletedAt;
}
그리고 자동으로 날짜를 입력받기 위해 Auditing 설정을 하도록 하겠습니다.
AuditingConfig
따로 config 패키지를 만들어서 해당 패키지 안에 AuditingConfig 클래스를 작성한 다음 필요한 어노테이션을 추가하도록 하겠습니다.
@Configuration
@EnableJpaAuditing
public class JpaAuditingConfig {
}
다른 글들을 찾아보다 보면, Main Application이 있는 클래스에 @EnableJpaAuditing
을 추가하는 경우가 있는데
테스트 코드의 @WebMvcTest에서 애플리케이션 클래스 호출할 때 예외가 발생할 수 있기 때문에
따로 클래스를 만들어서 진행하는 것을 권장하고 있다.
에러가 발생하는 이유
반응형
'프로젝트 > Archive' 카테고리의 다른 글
[02] 로그인 기능 만들기 - 0 (0) | 2022.12.21 |
---|---|
[01] 회원가입 기능 만들기 - 1 (0) | 2022.12.21 |
[스프링 부트 쇼핑몰 프로젝트 with jpa] Thymeleaf 소개 (0) | 2022.10.06 |
[스프링 부트 쇼핑몰 프로젝트 with jpa] Spring DATA JPA Querydsl (0) | 2022.10.04 |
[스프링 부트 쇼핑몰 프로젝트 with jpa] @Query 어노테이션 (0) | 2022.09.21 |