Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 유레카
- docker-compose
- 이분 매칭
- 이분 탐색
- 스택
- Gradle
- BFS
- 비트마스킹
- 완전 탐색
- Zuul
- 트리
- spring cloud
- 메모이제이션
- 달팽이
- dp
- 서비스 디스커버리
- 다익스트라
- 구간 트리
- ZuulFilter
- 주울
- Logback
- 게이트웨이
- 백트래킹
- 도커
- Spring Cloud Config
- Java
- 스프링 시큐리티
- 구현
- spring boot
- 플로이드 와샬
Archives
- Today
- Total
Hello, Freakin world!
User 엔티티 작성하기 본문
이전 글에서 설계한 명세대로 User 엔티티를 작성해보자.
User
package com.springboot.myshop.domain.user;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.LocalDateTime;
@Getter
@NoArgsConstructor
@Entity
public class User {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "USER_ID")
private Long id;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
private String password;
@Embedded
private Address address;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private RoleType roleType;
@Column(nullable = false)
private LocalDateTime createdDatetime;
@Column(nullable = false)
private LocalDateTime modifiedDatetime;
@Builder
public User(String email, String password,
Address address, RoleType roleType, LocalDateTime createdDatetime, LocalDateTime modifiedDatetime) {
this.email = email;
this.password = password;
this.address = address;
this.roleType = roleType;
this.createdDatetime = createdDatetime;
this.modifiedDatetime = modifiedDatetime;
}
}
id의 자동 생성 전략은 sequece 방식으로 설정했다. 지연 로딩을 적극적으로 활용해볼 계획이기 때문.
(Identity 전략은 엔티티를 영속화 할때 비어있는 id값을 바인딩하기 위해 플러시 하기전에 sql을 실행하기 때문에 지연 로딩을 할 수 없다고 한다.)
email을 비지니스 키로 활용하기 위해 유니크 제약 속성을 true로 설정해 준 것 말고 다른 특이사항은 없는 것 같다.
테이블이 제대로 작성되는지 앱을 실행시켜 보자.
Hibernate: drop table if exists user CASCADE
Hibernate: drop sequence if exists hibernate_sequence
Hibernate: create sequence hibernate_sequence start with 1 increment by 1
Hibernate: create table user (user_id bigint not null, address varchar(255), created_datetime timestamp not null, email varchar(255) not null, modified_datetime timestamp not null, password varchar(255) not null, role_type varchar(255) not null, primary key (user_id))
Hibernate: alter table user add constraint UK_ob8kqyqqgmefl0aco34akdtpe unique (email)
별다른 에러없이 ddl(data definition language) 실행에 성공!
나머지 필드 객체들
RoleType
package com.springboot.myshop.domain.user;
public enum RoleType {
GUEST, MEMBER, ADMIN;
}
Address(공공 API 확인 전까지 임시 클래스)
package com.springboot.myshop.domain.user;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import javax.persistence.Embeddable;
@Getter
@RequiredArgsConstructor
@Embeddable
public class Address {
private final String address;
}
이제 이 엔티티를 바탕으로 회원 기능들을 구현할 차례다.
'Toy Project > 쇼핑몰 만들기 프로젝트' 카테고리의 다른 글
Item 엔티티 추가 (0) | 2020.08.18 |
---|---|
고객 도메인 RESTful api 1차 완성 (0) | 2020.07.19 |
RESTful 구현 기술 선택 (0) | 2020.07.08 |
User 엔티티명 Customer로 수정, Jpa Auditing 적용 (0) | 2020.07.06 |
쇼핑몰 v1.0 설계하기 (0) | 2020.07.04 |
Comments