블로그 테이블 구조 확인
컬럼명 자료형 null 허용 키 설명
id | BIGINT | N | 기본키 | 일련번호, 기본키 |
title | VARCAR(255) | N | 게시물 제목 | |
content | VARCAR(255) | N | 내용 |
스프링 부트와 JPA 프로젝트에서 패키지 구조를 구성하는 트렌드는 도메인 주도 설계(Domain-Driven Design, DDD)의 원칙을 사용하는 사례가 많이 보인다. 이는 애플리케이션의 구조를 기능이나 역할에 따라 나누기보다는, 도메인 중심으로 나누어 애플리케이션의 유지보수성과 확장성을 높이려는 의도나 방식이다.
(여기서 도메인은 애플리케이션이 해결하려는 특정 비즈니스 문제나 현실 세계의 문제를 의미한다. 예를 들어, 은행 애플리케이션에서 "계좌", "고객", "거래"는 중요한 비즈니스 개념이며, 이것들이 바로 그 애플리케이션의 "도메인" 이 된다.)
DDD 방식의 프로젝트 구조만들어 보기
1. 도메인별로 패키지 구성
각 도메인에는 그 도메인과 관련된 모든 엔티티, 서비스, 레포지토리, DTO 등이 포함됩니다.
2. 공통 패키지 (설정, 유틸리티 등)
도메인과는 별개로, 설정 관련 패키지나 공통적으로 사용하는 유틸리티 패키지를 포함합니다.
Article 생성하기
package com.example.demo._domain.blog.entity;
import org.hibernate.annotations.GeneratorType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
// 반드시 기본 생성자가 있어야 된다.
@Entity(name = "tb_article")
@NoArgsConstructor
@Data
public class Article {
// 특정 생성자에만 빌더 패턴을 추가할 수 있다.
@Builder
public Article(String title, String content) {
this.title = title;
this.content = content;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // db로 위임
@Column(name = "id", updatable = false)
private Long id;
@Column(name = "title", nullable = false) // not null
private String title;
@Column(name = "content", nullable = false) // not null
private String content;
}
'Spring boot > 개념 공부' 카테고리의 다른 글
OOP 회원과 주문 관리 설 (4) | 2024.10.01 |
---|---|
Stream API (0) | 2024.10.01 |
블로그 프로젝트 만들기 - 1 (6) | 2024.10.01 |
단방향,양방향 매핑에 대한 이해 (0) | 2024.10.01 |
영속성 컨텍스트란? (0) | 2024.10.01 |