1. Repository
public void update(int id, String title, String content) {
Query q = em.createNativeQuery("update board_tb set title = ?, content = ? where id = ?");
q.setParameter(1, title);
q.setParameter(2, content);
q.setParameter(3, id);
q.executeUpdate();
}
2. Controller
@PostMapping("/board/{id}/update")
public String update(@PathVariable("id") int id,BoardRequest.UpdateDTO updateDTO) {
boardService.게시글수정하기(id,updateDTO.getTitle(),updateDTO.getContent());
return "redirect:/board/"+id;
}
form으로 받은 parameter들을 하나씩 받고 싶다면 @RequestParam(”title”) String title 이런식으로 받아오면 된다.
BoardRequest.UpdateDTO updateDTO가 아니라 Board board로 받아도 된다.
이 때, 나머지 id, createdAt은 null 처리가 돼서 null값을 가질 수 없는 int id자리에는 0으로 초기화가 되므로 id는 int가 아닌 Integer로 설정하는 것이 좋다.
→ dto로 관리하는게 편하다
int와 Integer
int: 기본 데이터 타입(int, long, float, double…)으로 null 값을 가질 수 없다. 초기화하지 않으면 기본적으로 0으로 초기화된다.
Integer: *래퍼 클래스로 int의 객체 표현이다. null 값을 가질 수 있다.
객체이기 때문에 메서드와 속성을 사용할 수 있다. Integer 클래스에는 다양한 유틸리티 메서드가 포함되어 있다.

래퍼 클래스(Wrapper Class)는 Java에서 기본 데이터 타입(primitive type)을 객체로 변환하기 위해 제공되는 클래스이다. 기본 데이터 타입은 객체가 아니기 때문에, 객체로서의 기능(예: 메서드 호출, null 값 할당 등)을 사용하려면 래퍼 클래스를 사용해야 한다.
- 객체화 : 기본 데이터 타입을 객체로 감싸서 사용할 수 있게 해준다. 예를 들어, int를 Integer로 변환하여 객체로 사용할 수 있다.
- null 값: 래퍼 클래스는 null 값을 가질 수 있다. 이는 데이터베이스와의 상호작용이나 컬렉션에서 유용하다.
- 유틸리티 메서드: 래퍼 클래스는 다양한 유틸리티 메서드를 제공한다. 예를 들어, Integer 클래스는 숫자를 문자열로 변환하거나, 문자열을 숫자로 변환하는 메서드 등을 제공한다.
- 자동 박싱과 언박싱: Java는 자동 박싱(primitive to wrapper)과 자동 언박싱(wrapper to primitive)을 지원한다.
// 3. 유틸리티 메서드
int num = Integer.parseInt("123"); // 문자열을 int로 변환
String str = Integer.toString(123); // int를 문자열로 변환
// 4. 자동박싱과 언박싱
Integer integerObj = 10; // 자동 박싱
int primitiveInt = integerObj; // 자동 언박싱
3. Service
@Transactional
public void 게시글수정하기(int id, BoardRequest.UpdateDTO updateDTO) {
boardRepository.update(id,updateDTO.getTitle(),updateDTO.getContent());
}
Repository의 update를 다른 Service의 메서드가 사용할 수도 있다
-> Repository의 update가 UpdateDTO에 의존되지 않도록 updateDTO.getTitle이런식으로 빼서 Repository로 넘겨준다.
Controller와 Service는 1:1 매칭된다. 그래서 종속돼도 됨 -> UpdateDTO 통째로 넘김
Share article