본문 바로가기
[Spring Boot]

[스프링부트] 게시판 만들기 [1] - 프로젝트 구조 이해 및 기초 개념

by 슬쨩! 2024. 1. 11.

 

[게시판 프로젝트 작업 디렉토리 설명]

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; 
}