Purple Bobblehead Bunny

Backend/SPRINGBOOT

[SpringBoot] 게시판 만들기 2. 게시글 작성

준영어린이 2022. 10. 31. 15:08

 

 

 

 

우선, html 코드를 작성한다.

백엔드 중점으로 공부를 하는 게시물이기 때문에, html은 간단하게 구현만 한다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>게시물 작성</title>
</head>
<style>
    .layout {
        width: 500px;
        margin: 0 auto;
        margin-top: 40px;
    }

    .layout input{
        width: 100%;
        box-sizing: border-box;
    }
    .layout textarea {
        width: 100%;
        margin-top: 20px;
        min-height: 300px;
    }

    h2 {
        text-align: center;
    }
</style>
<body>
    <form action="/board/writepro" method="post">
    <h2>게시물 작성</h2>
    <div class="layout">
        <input type="text" name="title">
        <textarea name="content"></textarea>
        <button type="submit">작성</button>
    </div>
    </form>
</body>
</html>

DB에 값을 넣기 위해 form 태그를 쓰고, textarea, input의 name을 테이블 컬럼 명과 동일하게,

button type을 submit으로 지정

 

 

BoardController에서 boardwrite.html로 이동을 하기 위한 메서드를 작성한다.

 

/localhost:8080/board/write 주소를 입력하게 되면, boardwrite.html으로 이동을 하게 된다.

 

 

 

 

Entity class를 작성한다. 

Entity 클래스는 실제 DB 테이블과 매핑되는 핵심 클래스로, DB의 테이블에 존재하는 컬럼들을 필드로 가지는 객체다.

 

id, title, content - 실제 DB 컬럼 명과 동일하게

 

@Entity -  Entity 클래스임을 명시한다,

@Data - @Getter/@Setter/@ToString/@EqaulsAndHashCode/@RequiredArgsConstructor

                                   이 모두를 합쳐 놓은 어노테이션이다.

 

@Id - 기본 키 임을 나타낸다. 모든 Entity 클래스는 @Id 설정이 필요하다.

@GeneratedValue(strategy = GenerationType.IDENTITY) - JPA가 기본키 생성을 하도록 한다. 

 

BoardRepository는 interface로 생성을 한다.

 

JpaReposotiry 인터페이스는 CRUD 작업, 페이징, 정렬 등의 처리를 인터페이스의 메서드를 호출 하는 형태로

처리 하는데, 기능에 따라 상속 구조로 추가적인 기능을 제공한다. 모든 JPA 관련 기능을 사용 하고 싶다면,

JpaRepository를 사용 하는 것이 좋다.

 

JpaRepository<Entity, PK 유형>

 

JpaRepository의 경우 아래와 같은 메서드를 활용한다.

  • insert : save(Entity 객체)
  • select : findById(키 타입), getOne(키 타입)
  • update : save(Entity 객체)
  • delete : deleteById(키 타입),delete(Entity 객체)

 

BoardService 클래스를 생성한다. 

마찬가지로 @Service 어노테이션을 사용하고,

@Autowired 어노테이션을 통해, 의존성을 주입한다.

그리고 JPARepository 인터페이스의 save 메서드를 사용을 해 DB에 insert를 한다.

 

BoardController로 이동을 해, 글 작성을 구현한다.

 

글 작성 html에서 method는 post, form action은 /board/writepro 로 입력을 했다.

그에 맞게 Controller에서 구현을 한다.

 

 

서버 재 가동 후 /board/write로 이동을 한다.

/board/writepro는 없기 때문에 당연히 오류 발생

 

workbench를 들어가보니 값이 잘 들어 가있음을 확인 할 수 있었다