<body>
<div class="layout">
<form action="/board/writepro" method="post">
<input name="title" type="text">
<textarea name="content"></textarea>
<button type="submit">작성</button>
</form>
</div>
</body>
@PostMapping("/board/writepro")
public String boardwritePro(Board board){ //String title, String content
System.out.println("제목: " +board.getTitle());
System.out.println("내용: " +board.getContent());
return "";
}
package com.study.board.entity;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
//DB 테이블 = java Entity class
@Entity
@Data
public class Board {
@Id //primary key
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String title;
private String content;
}
Entity는 데이터베이스에 테이블과 같은 의미로 쓰이며 자바에서는 테이블을 엔티티라고 한다.
👉 해당 뷰가 아직은 없어서 이렇게 뜨지만 생성해주면 정상적으로 해당 뷰를 반환해준다.
package com.study.board.repository;
import com.study.board.entity.Board;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
//<Entity class, primary key type>
public interface BoardRepository extends JpaRepository<Board, Integer> {
//레포지토리 -> 서비스에서 이용
}
JpaRespository를 상속받아 사용하게 되면 save나 find처럼 우리가 많이 사용하고 자주 사용하는 메소드들이 이미 구현되어 있기 때문에 더욱 펴리하게 사용할 수 있다.
package com.study.board.service;
import com.study.board.entity.Board;
import com.study.board.repository.BoardRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
//서비스 -> 컨트롤러에서 이용
@Service
public class BoardService {
@Autowired
private BoardRepository boardRepository;
public void write(Board board){
//엔티티를 이 안에 넣어주는 것
boardRepository.save(board);
}
}
이 경우는 jpa 드라이브 의존관계 설정을해주지 않아서 생기는 문제일 수가 있다. build.gradle을 확인 한 후 의존성 설정을 해주면 해결된다.(@Entity가 안 될때)
기본적으로 계층을 나눠서 개발하는 경우엔 repository에 있는 정보를 service가 사용하고 service로 만든 비지니스 로직을 controller에서 사용한다.