1. 필요 기능
- Tag
- 카테고리: 성과 / 정보 / 후기 / 활동
- Posts : 대표이미지, 카테고리, 제목, 작성자, 작성일 표시
- 검색
- 이전글 / 다음글
2. 기능별 필요 데이터
1. Tag @Entity, @Table(name = "tag")
- id(고유변호)
@Id, @GeneratedValue(strategy = GenerationType.IDENTITY) (DB가 순서대로 1, 2, 3... 번호 자동 생성)
- name(태그이름)
@Column(nullable = false, unique = true) (비어있을 수 없고 중복 불가 설정)
2. 작성자 표시 (member) @Entity, @Table(name = "member")
- id(고유변호)
@Id, @GeneratedValue(strategy = GenerationType.IDENTITY) (DB가 순서대로 1, 2, 3... 번호 자동 생성)
- email(로그인용 아이디)
@Column(nullable = false, unique = true) (중복 가입 방지)
- password(비밀번호)
@Column(nullable = false) (비밀번호는 필수 입력)
- generation(기수 ex.29기)
@Column
- name(이름)
@Column(nullable = false)
- role(권한 - 글 작성이 가능한 권한인지 확인용)
@Enumerated(EnumType.STRING) (만약 권한을 ADMIN, USER 같은 Enum으로 관리할 경우) 또는 그냥 @Column
3. Posts @Entity, @Table(name = "post")
글 하나를 표현하기위해 저장해야 할 정보들
- id(고유 번호)
@Id, @GeneratedValue(strategy = GenerationType.IDENTITY)
- title(제목)
@Column(nullable = false) (제목 필수 입력)
- content(본문 내용)
@Column(columnDefinition = "TEXT") (아주 긴 글을 쓸 수 있도록 설정)
- thumnailUrl(대표이미지 주소) -> 이미지 업로드를 위해 꼭 필요
(대표 이미지를 선택할 수 있는 기능, 선택하지않으면 맨 위사진, 쓸 사진 없으면 기본 이미지)
@Column
- categery(선택한 카테고리 나타내기 위해) -> Java Enum 타입 사용
@Enumerated(EnumType.STRING) (자바의 Enum 이름을 데이터베이스에 글자 그대로 저장하도록 설정)
- createAt(작성일)
@CreatedDate (스프링이 글이 생성되는 시간을 자동으로 기록하도록 설정)
- memberId(작성자 고유번호) -> Member 테이블의 id와 연결될 것?
(Post테이블에 작성자의 이름이나 기수를 직접 텍스트로 적지 않음. 작성자의 고유 번호인 memberId를 외래키로 저장해둘 것)
@ManyToOne, @JoinColumn(name = "member_id")
- Post와 Tag는 다대다 관계
(하나의 태그는 여러 포스트에 사용 가능. 하나의 포스트에 여러개의 태그 사용 가능)
-> PostTag라는 중간 연결 엔티티 만들기 (X번 게시글에는 Y번 태그가 붙어있다)
@Entity, @Table(name = "post_tag")
- id
@Id, @GeneratedValue(strategy = GenerationType.IDENTITY)
- post(어떤 게시글인가)
@ManyToOne (하나의 포스트에 여러 태그 매핑 연결), @JoinColumn(name = "post_id")
- tag(어떤 태그인가)
@ManyToOne (하나의 태그가 여러 포스트에 매핑 연결), @JoinColumn(name = "tag_id")
검색 기능
| 검색 조건 | 데이터베이스에서 찾아야 할 위치 |
| 제목 검색 | Post 엔티티의 title 필드 |
| 내용 검색 | Post 엔티티의 content 필드 |
| 작성자 검색 | Post와 연결된 Member엔티티의 name필드 |
-> 블로그 검색은 PostRepository에서 처리할 것
- Spring Data JPA -> 이게 더 쉬움 (제목검색, 내용검색을 각각 빠르게 구현 된다나)
- Querydsl -> 어렵 (검색 조건이 복잡하거나 동적 검색이 필요할 때)
클라우드플레어 연동
이전글 / 다음글
1. 기준값 설정: 그 글의 id를 백엔드에 던짐
2. 이전글을 찾아오는 규칙(JPA Repository 메서드 설계)
- 조건: 나보다 id가 작은 글들 중
- 정렬: 가장 최근에 써진 순서대로 정렬해서(ORDER BY id DESC)
- 개수: 맨 위에 나오는 1개만 가져온다(LIMIT 1)
- JPA 메서드 이름: findFirstByIdLessThanOrderByIdDesc(Long id)
3. 다음글을 찾아오는 규칙
- 조건: 나보다 id가 큰 글들 중
- 정렬: 가장 먼저 써진 순서대로 정렬해서(ORDER BY id ASC)
- 개수: 맨 위에 나오는 1개만 가져온다(LIMIT 1)
- JPA 메서드 이름: findFirstByIdGreaterThanOrderByIdAsc(Long id)
'SWLUG(2026) > 유지보수' 카테고리의 다른 글
| [SV 2주차] 이미지 로드 실패 (0) | 2026.07.08 |
|---|---|
| [SV 1주차] 회원가입 시 이메일 인증오류 (0) | 2026.07.01 |
| [5주차] item 설계 및 실습, 포스트맨 실습 (0) | 2026.05.19 |
| [4주차] member entity, order entity, cart entity 설계 / 포스트맨 실습 (0) | 2026.05.10 |
| [3주차] DB 설명 및 설계 & 프로젝트 실습 1차 (0) | 2026.05.06 |