2.프레임워크/Spring Boot
[스프링부트] 게시판 만들기 [1] - 프로젝트 구조 이해 및 기초 개념
슬쨩!
2024. 1. 11. 17:35
[게시판 프로젝트 작업 디렉토리 설명]
1. src/main/java 디렉터리
-. com.mysite.mybo 패키지 : 이 패키지는 SBB의 자바 파일을 저장하는 공간
: 컨트롤러, 폼과 DTO, 데이터베이스 처리를 위한 엔티티, 서비스 등의 자바 파일이 이 곳에 위치
-. MyboApplication.java 파일 : 모든 프로그램의 시작을 담당하는 파일
( 프로젝트명 + Application.java 파일 )
2. src/main/resources 디렉터리 : 자바파일을 제외한 HTML, CSS, 자바스크립트, 환경 파일
-. templates 디렉터리 : html 파일 저장
-. static 디렉터리 : css, js, img 파일 저장
-. application.properties 파일 : 프로젝트의 환경 변수, 데이터 베이스 등의 설정을 저장
3. src/test/java 디렉터리 : 테스트 코드를 저장하는 공간
* build.gradle파일 디렉터리 : Gradle이 사용하는 환경 파일
-. 프로젝트에 필요한 플러그인과 라이브러리를 설치하기 위한 내용을 작성
-. build.gradle 파일에서 작성한 implementation은 필요한 라이브러리 설치를 위해 가장 일반적으로 사용하는 설정
[JPA]
-. 객체 지향적인 코드 작성과 데이터베이스 조작을 편리하게 연결해주는 역할
-. 객체 지향 프로그래밍에서 사용되는 클래스와 관계형 데이터베이스의 테이블 간의 매핑을 자동화
- 엔티티 (데이터베이스 테이블 생성)
[ Question 엔티티]
id | 질문 데이터의 고유 번호 |
subject | 질문 데이터의 제목 |
content | 질문 데이터의 내용 |
createDate | 질문 데이터를 작성한 일 |
@Getter
@Setter
@Entity
public class Question {
@Id // 기본키로 지정
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(length = 200)
private String subject;
@Column(columnDefinition = "TEXT")
private String content;
private LocalDateTime createDate;
}
[Answer 엔티티]
id | 답변 데이터의 고유 번호 |
question | 질문 데이터 (어떤 질문의 답변인지 알아야 하므로 이 속성이 필요하다.) |
content | 답변 데이터의 내용 |
createDate | 답변 데이터를 작성한 일시 |
@Getter
@Setter
@Entity
public class Answer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(columnDefinition = "TEXT")
private String content;
private LocalDateTime createDate;
@ManyToOne //N:1의 관계, 답변은 많고, 질문은 하나, 엔티티가 서로 연결(디비에서는 외래키 관계가 생성)
private Question question;
}