[Spring Boot] 11. bankv1 (테이블 설계)

김건우's avatar
Apr 01, 2025
[Spring Boot] 11. bankv1 (테이블 설계)
notion image
package com.metacoding.bankv1.user; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; import java.sql.Timestamp; @NoArgsConstructor @Getter @Table(name = "user_tb") @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column(unique = true, nullable = false, length = 12) private String username; // ssar, cos @Column(nullable = false, length = 12) private String password; @Column(nullable = false) private String fullname; // 쌀 -> 쌀망고, 코스 private Timestamp createdAt; // 생성날짜 (insert 된 시간) }
package com.metacoding.bankv1.account; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Table; import lombok.Getter; import lombok.NoArgsConstructor; import java.sql.Timestamp; @NoArgsConstructor @Getter @Table(name = "account_tb") @Entity public class Account { @Id private Integer number; // 계좌번호 PK private String password; private Integer balance; // 잔액 private Integer userId; // FK private Timestamp createdAt; }
package com.metacoding.bankv1.history; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; import java.sql.Timestamp; @NoArgsConstructor @Getter @Table(name = "history_tb") @Entity public class History { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private Integer withdrawNumber; // 1111 (FK) private Integer depositNumber; // 2222 (FK) private Integer amount; // 100원 private Integer withdrawBalance; // 900원 그 시점에 잔액 private Timestamp createdAt; // 생성날짜 (insert 된 시간) }
# utf-8 server.servlet.encoding.charset=utf-8 server.servlet.encoding.force=true # DB spring.datasource.driver-class-name=org.h2.Driver spring.datasource.url=jdbc:h2:mem:test spring.datasource.username=sa spring.datasource.password= spring.h2.console.enabled=true # JPA table create or none spring.jpa.hibernate.ddl-auto=create # query log spring.jpa.show-sql=true # dummy data spring.sql.init.data-locations=classpath:db/data.sql # create dummy data after ddl-auto create spring.jpa.defer-datasource-initialization=true # mustache request expose spring.mustache.servlet.expose-request-attributes=true # sql formatter spring.jpa.properties.hibernate.format_sql=true
insert into user_tb(username, password, fullname, created_at) values ('ssar', '1234', '쌀', now()); insert into user_tb(username, password, fullname, created_at) values ('cos', '1234', '코스', now()); insert into account_tb(number, password, balance, user_id, created_at) values (1111, '1234', 900, 1, now()); insert into account_tb(number, password, balance, user_id, created_at) values (2222, '1234', 1100, 1, now()); insert into account_tb(number, password, balance, user_id, created_at) values (3333, '1234', 1000, 2, now()); insert into history_tb(withdraw_number, deposit_number, amount, withdraw_balance, created_at) values (1111, 2222, 100, 900, now()); insert into history_tb(withdraw_number, deposit_number, amount, withdraw_balance, created_at) values (1111, 3333, 100, 800, now()); insert into history_tb(withdraw_number, deposit_number, amount, withdraw_balance, created_at) values (3333, 1111, 100, 1000, now());
Share article

gunwoo