본문 바로가기
  • Let's study

Spring32

[Spring] Validation으로 입력값 검증하기 [Spring] HTML Form을 이용해 게시글 작성하기 [Spring] HTML Form을 이용해 게시글 작성하기웹 애플리케이션에서 사용자가 게시글을 작성하려면 입력할 수 있는 Form을 제공하고, 사용자가 입력한 데이터를 서버로 전송하여 저장하는 과정이 필요하다.이번에는 Spring Boot에서 HTML Form을 사hyemzzi.tistory.com앞서 HTML Form을 이용해 게시글 작성 기능을 구현하였다.현재는 사용자가 제목과 내용을 입력하지 않거나 너무 짧게 입력하더라도 그대로 게시글을 저장할 수 있다.따라서 서버에서 사용자가 입력한 값이 올바른지 검사하는 과정이 필요하다.이번에는 Spring Validation을 적용하여 게시글의 제목과 내용을 검증해 보았다.1. Spring Valida.. 2026. 8. 11.
[Spring] HTML Form을 이용해 게시글 작성하기 웹 애플리케이션에서 사용자가 게시글을 작성하려면 입력할 수 있는 Form을 제공하고, 사용자가 입력한 데이터를 서버로 전송하여 저장하는 과정이 필요하다.이번에는 Spring Boot에서 HTML Form을 사용하여 게시글 작성 기능을 구현해 보았다.1. HTML Form 만들기먼저 사용자가 제목과 내용을 입력할 수 있는 Form을 만든다. 은 사용자가 입력한 데이터를 서버로 전송하기 위한 HTML 요소이다.여기서 input과 textarea는 입력 방식에 차이가 있다.input : 한 줄의 텍스트를 입력할 때 사용한다.textarea : 여러 줄의 텍스트를 입력할 때 사용한다.게시글 작성에서는 제목은 한 줄로 입력하고, 내용은 여러 줄로 입력할 수 있으므로 각각 inpu.. 2026. 8. 10.
[Spring] @PathVariable vs @RequestParam 차이와 사용 기준 Spring에서 클라이언트의 요청 데이터를 받는 방법에는 여러 가지가 있다.가장 많이 사용하는 것이 @PathVariable과 @RequestParam이다.둘 다 값을 전달받는 용도이지만, 사용하는 상황은 다르다.@PathVariable@PathVariable은 URL 경로(Path)에 포함된 값을 가져올 때 사용한다.예를 들어 게시글 번호처럼 반드시 필요한 식별자(id) 를 전달할 때 많이 사용한다.@GetMapping("/question/{id}")public String detail(@PathVariable int id) { ...}요청 URL/question/3실제로는 3이 id 변수에 저장된다.왜 id는 Path에 넣는 것이 좋을까?게시글 번호처럼 리소스를 식별하는 값은 URL 경로에 포함.. 2026. 8. 7.
[Spring] 왜 Exception을 던질까? Java에서는 예외 상황이 발생했을 때 return으로 값을 반환하기보다 Exception을 발생시키는 것이 일반적이다.Spring도 메서드가 정상적으로 return되면 정상적으로 작업이 완료된 것으로 판단한다.왜 Exception을 사용할까?예를 들어 회원을 조회한다고 가정해 보자. public Member findMember(Long id) { if (id id가 잘못된 값이라면 메서드를 계속 실행하는 것보다 즉시 예외를 발생시키는 것이 안전하다.예외가 발생하면 메서드 실행이 즉시 중단되고, 호출한 곳에서도 문제가 발생했다는 사실을 명확하게 알 수 있다.return은 정상 종료아래 메서드는 정상적으로 종료된 것으로 처리된다. public void save() { return;} 하지만 아.. 2026. 8. 7.
[Spring] @Transactional이 내부 호출에서 동작하지 않는 이유 Spring에서 @Transactional을 붙였는데 트랜잭션이 적용되지 않는 경우가 있다.대표적인 경우가 같은 객체 내부에서 메서드를 호출하는 경우이다.문제 상황예를 들어 아래와 같은 코드가 있다고 하자. @Servicepublic class PersonService { public void work() { save(); // 내부 호출 } @Transactional public void save() { System.out.println("저장"); }} work()를 호출하면 save()에도 @Transactional이 있으므로 트랜잭션이 시작될 것 같지만, 실제로는 트랜잭션이 적용되지 않는다.왜 동작하지 않을까?Spring의 @Transaction.. 2026. 8. 7.
[Spring] JPA 메서드 명명 규칙(Query Method) Spring Data JPA를 보면 QuestionRepository에는 findBySubject() 메서드를 직접 구현하지 않았는데도 정상적으로 동작한다. public interface QuestionRepository extends JpaRepository { Question findBySubject(String subject);} 메서드를 선언만 했는데 어떻게 SQL이 실행되는 걸까?구현하지 않아도 동작하는 이유비밀은 Spring Data JPA의 Query Method 기능에 있다.Spring Data JPA는 Repository 인터페이스의 메서드 이름을 분석하여 그에 맞는 SQL을 자동으로 생성한다. Question findBySubject(String subject); 라는 메서드를 선.. 2026. 8. 7.