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 |
Tags
- 논블록킹 성능
- Loki 로그
- 애자일 싫타
- jar 배포
- 플루터
- RedirectService
- formik
- 개발 어렵당.ㅠ
- 티스토리챌린지
- fake jwt
- nGinder
- save/update
- jsonMarshaller
- 핀포인트
- 7879
- 오블완
- intellij
- ㅉ때
- reids
- LPOS
- pinpoint
- Ingress Controller Fake
- Armeria
- R2DBC Paging
- hbase 저장공간 설정
- UnsupportedOperationException
- 노드간 통신
- OIDC
- pinpoint 2.5.3
- 월급루팡 일지
Archives
- Today
- Total
대머리개발자
평생 개발 공부를 해야하는 이유 본문
728x90
DB 컬럼의 타입도 ENUM을...와우...진작 이야기를 해줘야제..이미 한참 전에 있었겠지만 이제서야 알앗네..
create table if not exists Point
(
id bigint AUTO_INCREMENT PRIMARY KEY comment 'ID',
userId varchar(32) not null comment '사용자 ID',
amount INT NOT NULL,
actionType ENUM('EARN', 'REFUND', 'SPEND') NOT NULL,
status ENUM('ACTIVE', 'EXPIRED') default 'ACTIVE' not null comment 'point 상태',
regDt datetime default current_timestamp() not null comment '등록 일시'
);
너무 좋으다.!!
@Table("point")
data class Point(
@Id
var id: Long=0,
@Column("userUid")
var userUid: String="",
@Column("actionType")
var actionType: ActionType?=ActionType.EARN,
var amount: Int=0,
var status: EntityStatus?=EntityStatus.ACTIVE,
@Column("regDt")
var regDt: LocalDateTime?= null,
) : Persistable<Long> {
override fun getId(): Long {
return id
}
override fun isNew(): Boolean {
...
}
}
enum class ActionType {
EARN, 'REFUND' , SPEND
}
enum class EntityStatus {
ACTIVE , EXPIRED
}
값을 범위를 사전에 정하면 여러모로 아주 많이 편하다.!! 타입스크립트가 뜨는 이유가 다 있겠쥬.
미리 정한것이 아닌 것들이 오면 예외처리가 알아서 되고
어떤 값들이 들어가는지를 코드만 통해서 쉽게 파악 되고
유지보수가 쉽게 되고
... 되고
도태하지 말자!.. 익숙한 것들과의 결별하자..
고인물이 되지 말자!!
참고로 포인트 관련된 서비스를 만들고 있는데 핵심은 절대 업데이트는 없다는 것이다!!
Insert와 delete로 신뢰성을 높이자!
728x90
'개발이야기 > DataBase' 카테고리의 다른 글
DB 꽃은 튜닝이지! (0) | 2024.03.07 |
---|---|
querydsl로 마이그레이션 (0) | 2024.03.07 |
이벤트 참여자 무작위 추첨 (0) | 2024.02.06 |
redisson 아직은... (0) | 2024.02.01 |
Mysql + R2DBC 쿼리 로그 (0) | 2024.01.25 |