본문 바로가기
BackEnd/Project

[Loan] Ch06. 대출 상환 테이블 정의

by 개발 Blog 2024. 9. 14.

공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.

 

대출 상환 도메인

 

이전까지 대출 상담을 받고 신청을 해서 심사 요건에 맞게 대출금을 받으면 빌려 주는 측에서 빌리고자 하는 사람에게 혹은 기관에게 돈을 집행한다. 집행된 대출금은 빌린 사람은 상환을 하면서 빌린 금액을 모두 갚아야 한다. 상환을 할 때 한 번에 갚을 수도 있지만 여러 번에 나눠서 갚을 수도 있다. 그럼 빌려준 금액에 더해서 이자를 더해서 돈을 갚아야 한다. 빌린 사람 입장에서는 대출금을 매회 상환 해야 하고 얼마큼의 대출 잔액이 남았는지 언제 몇 회에 걸쳐 대출금을 갚았는지 이력도 있어야 되고 기능으로도 제공해 줘야 한다.

 

테이블 정의

대출 상환 도메인에서 Repayment 엔티티는 대출금 상환 내역을 기록하는 중요한 테이블이다. 이 테이블에는 repaymentId(상환 ID), applicationId(신청 ID), repaymentAmount(상환 금액) 등의 필드가 포함되어 있다. 이 테이블을 통해 사용자는 상환 내역을 확인할 수 있으며, 시스템은 상환 일정을 추적한다.

package com.example.loan.domain;

import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.Where;

import javax.persistence.*;
import java.math.BigDecimal;

@Entity
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@DynamicInsert
@DynamicUpdate
@Where(clause = "is_deleted=false")
public class Repayment extends BaseEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(nullable = false, updatable = false)
    private Long repaymentId;

    @Column(columnDefinition = "bigint NOT NULL COMMENT '신청 ID'")
    private Long applicationId;

    @Column(columnDefinition = "decimal(15, 2) NOT NULL COMMENT '상환 금액'")
    private BigDecimal repaymentAmount;
}