전체 글36 Spring Data JPA를 활용한 Update 처리(변경감지, 더티체킹) 최근 Spring Data JPA를 사용하며 SSR 방식으로 개발중이다. 게시글 정보를 수정하는 Update 로직을 처리 하려고 한다 JPA에서 Update 처리 로직을 보기 전에 변경감지(더티체킹)이 뭔지 알아보자 더티체킹이란? Transaction안에서 엔티티의 변경이 일어나면 변경내용을 자동으로 데이터베이스에 반영하는 JPA 특징이다. 게시글을 관리하는 BoardService의 updateBoard 메서드이다. 우리가 생각하는 JPA를 활용한 쿼리 처리는 JPARepository를 상속받고 있는 boardReporitory 인터페이스에서 JPA에서 제공해주는 기본 메서드인 findAll(), deleteById() 등 이런 메서드를 사용하여 update도 똑같이 처리를 할거라고 생각하겠지만, 소스를.. 2024. 4. 13. [Spring-Boot] no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) 에러 해결 방법 문제 컨트롤러에서 /search GET 요청이 들어오면 SearchBoadRequest 라는 DTO를 requestBody로 받아와 boardService에 searchBoard() 메서드에 request를 보내주고 요청을 처리하게 되어있다. 여기서 문제는 DTO 사용에서 문제가 생긴 것이다. com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `board.dto.SearchBoardRequest` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property.. 2024. 2. 7. [Java] ORM의 탄생, SQL 중심적인 개발의 문제점 패러다임의 불일치 우리가 가장 많이 사용하는 프로그래밍 패러다임은 단연 객체지향이다. 내가 공부하고 있는 언어인 자바도 객체지향 언어이다. 그리고 우리가 가장 많이 사용하는 데이터베이스는 관계형 데이터베이스이다. MySQL, MariaDB, Oracle 등 모두 다 관계형 데이터 베이스이다. 우리는 지금 객체를 관계형 데이터베이스에 저장하고 관리하는 시대이다. 이런 패더라임의 불일치로 인한 SQL 중심적인 개발은 많은 문제점이 있다. SQL 중심적인 개발의 문제점 1. 반복적인 객체-테이블 매핑과 CRUD 객체지향, 관계형 데이터베이스는 패러다임의 불일치로 우리는 추가적인 작업을 해야한다. 객체를 관계형 데이터베이스에 저장하고 꺼내오기 위해서는 객체를 테이블로, 테이블은 객체로 매핑하는 작업을 우리 개발.. 2024. 2. 6. PRG 패턴 : Post → Redirect → Get PRG 패턴이란? 웹 개발 패턴 중 자주 사용되는 패턴으로 HTTP POST 요청에 대한 응답이 GET 요청을 위한 URI로 리다이렉트되는 것이다. 현재 문제점 상품 등록 버튼을 누르면 POST로 /add를 호출한다. 그 후 결과물이 POST로 남아있다. 마지막으로 요청한 것은 POST/add이다. 그 결과 새로고침을 하면 마지막 요청이 반복되므로 id만 증가하고 중복된 상품이 계속 등록된다. 웹 브라우저의 새로고침은 마지막에 서버에 전송한 데이터를 다시 전송하기 때문이다. 등록완료 페이지에서 새로고침을 누르게되면 이런식으로 중복된 데이터가 계속 쌓이게 된다. 이것을 해결할 수 있는 방법이 PRG 패턴을 적용시키는 것이다. PRG 패턴 적용 후 흐름 상품 등록 버튼을 누르면 POST /add가 호출된다... 2024. 1. 26. [Spring-Boot] @Controller vs @RestContoller 차이점 Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있다. 이번에는 이 2가지 어노테이션의 차이점에 대해 정리해보겠다. 주요 차이점은 @ResponseBody가 생성되는 방식. 즉, @Controller + @ResponseBody 조합 = @RestContoller 이다. @Controller 전통적인 Spring MVC의 컨트롤러 어노테이션인 @Controller는 주로 View(화면)를 반환하기 위해 사용됨. 아래와 같은 요청으로 view를 반환하게 됨. Client는 URL 형식으로 요청을 보냄. DispatcherServlet이 요청을 위임할 Handler Mapping을 찾음. Handler Mapping을 통해 해당 요청을 받는 Con.. 2024. 1. 23. [Spring-Boot] 스프링부트에서 jstl 사용시 빨간줄 에러 해결방법 Spring Boot에서 jstl를 사용하려고 했는데 이렇게 인식이 안되는 에러가 발생했다. 분명 build.gradle에 디펜던시도 잘 추가해뒀는데 왜 이런지 알아보았다. 💡 해결 방법 스프링 3.0 버전 이상부터는 implementation 'jakarta.servlet:jakarta.servlet-api' //스프링부트 3.0 이상 implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api' //스프링부트 3.0 이상 implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl' //스프링부트 3.0 이상 디펜던시를 이렇게 설정하면 해결이 된다. 디펜던시 설정을 하고 나니 정상적으로 해결이.. 2024. 1. 18. 이전 1 2 3 4 5 6 다음