본문 바로가기

Spring Boot

(33)
62 : 검색기능 + 카테고리 (SpringbootAPi + JPA) 카테고리(제목/내용/작성자)를 선택 후 검색하는 기능을 만들어보자. 위 사진은 Jspmvc에서 구현한 모습이다. SpringbootApi는 Postman가 클라이언트 역할을 하므로 값을 직접 넣어줘야한다 (변수 stype가 위 사진의 "제목"을 선택하는 부분, svalue가 검색하는 부분이다) BoardJpaController의 @RequestParam 리스트 출력 페이지에 검색기능을 넣기위해서 url로 들어오는 검색값에 String형 null값을 허용하기 위해서 @RequestParam ( required = false ) 를 추가해줬다. -> 검색을 위한 stype(카테고리), svalue(검색값) 값을 넣지않으면 원래의 전체 리스트를 보여주게 만들것이다. @GetMapping(value = "/")..
61 : 답글 깊이 제한 (SpringbootApi + JPA) 1. 답글의 깊이를 3으로 제한 (11-06) @PostMapping(value = "/reply") public ApiResponse postBoardReplyContent(@RequestBody BoardDTO boardDTO){ if(boardDTO.getDepth()>2){ return new ApiResponse(false,"The maximum value cannot exceed 3", null); } return boardJpaService.postReply(boardDTO); } Comment에 깊이제한을 둬서 통과하지 못하면 Service로 넘어가지 못한다 자동으로 id값 을 할당하는 @GenerateValue 를 제거하고, 저번에 설정한 DB의 maxId + 1 로 id값을 지정했다(아..
60 : SpringbootApi 관련 질문 SpringbootApi의 여러 질문 중.. 어떤 API건 요청하는 특정 Requestbody에 대해 Exception을 내는 이유 즉 예외처리를 하는 이유는? (문제를 잘못 이해하고있었다..) 데이터 무결성 보호 시스템을 유지보수하는 개발자로 하여금 이상이 발생했을 때 빨리 조치(debug)하게 하기 위함 로그인 여부와 상관없이 호출할 수 있는 API 2개는? 왜 로그인 여부와 상관없이 호출 가능할까? 회원가입 - http://localhost:8080/api/member 로그인 - http://localhost:8080/SpringbootApi/authenticate API를 호출할때 처음 JwtRequestFilter에서 토큰값을 확인하고 실행되기 때문에 로그인(토큰확인)을 해야지 Api를 호출할수..
59 : jar & war 파일로 빌드하기 이전까지 만들었던 SpringbootApi 를 jar파일과 war파일로 빌드를 해볼것이다 jar/war 파일 빌드 하는법을 순서대로 적어놨다. jar 파일로 빌드하기 1. pom.xml 파일 다음과 같은 위치에jar 추가 4.0.0 org.springframework.boot spring-boot-starter-parent 2.5.5 kr.ac.daegu SpringbootApi 0.0.1-WAR-SNAPSHOT SpringbootApi SpringbootApi 1.8 jar 2. 우측 maven > Lifecycle > (필드 페이즈) package를 실행하면 > target에 SpringbootApi.jar 파일이 생성 이 파일을 open in Explorer or Terminel 로 연다. pack..
58 : 답글 구현하기 (SpringbootApi + JPA) 답글 구현하기의 Service 부분과, 쿼리를 구현하는 Repository 부분을 실행 순서에 따라 다룬 글이다 Repository의 코드는 (BoardRepository)로 표시 1. ID 값 체크 1-1 입력한 id로 해당하는 테이블 글정보 불러온다 -> 입력한 id로 검색한 값이 DB에 없으면 -> 예외 출력한다. @Transactional public ApiResponse postReply(BoardDTO dto) { /* JPQL TEST 겸 원글 불러오기 */ Board b = boardRepository.selectBoard(dto.getId()); if(b == null){ return new ApiResponse(false, "board id " + dto.getReplyRootId() ..
56 : 복수의 트랜잭션으로 Comment 처리 (Springboot + JPA) 다중 트랜잭션 (복수 트랜잭션) (하나의 API에 콜 할 때) DB에 (Insert, Update, Delete) 시키는 로직을 여러번 수행해야 할 때 예를들어 댓글을 구현할 때 다음과 같은 두 가지 sql 문을 실행해야한다 첫 번째로 댓글 입력하는 insert와 두 번째로 board의 댓글 수를 +1 하여 update 하는 작업 만약 insert는 성공했는데 update에 실패했다고 생각해보자. 분명 sql에는 데이터는 추가되었는데 board의 commentCount는 그대로이다. 이렇게 되면 데이터의 무결성이 파괴된다 -> 서비스에 신뢰가 떨어진다 이럴때 복수 트랜잭션을 사용하여 insert, update 둘중 하나라도 실패하면 -> 전체 실패처리 이를 @Transactional 의 성질 중 하나인 ..
55 : JPA+Pageable 페이징처리 (Springboot + JPA) 26- 게시판 만들기4 (페이징 처리) 추가한 기능 페이징처리와, EndUser에게 입력받은 '숫자'에 맞추어 글을 출력 동작순서 1. BoardList.jsp에서 EndUser에게 입력받아 Controller를 통해 BoardLIstCmd로 값을 넘겨준다 (action) 2. BoardListCmd에.. dwc04112.tistory.com 우선 JSP에서 MVC패턴으로 구현한 페이징처리를 보면 너무 복잡하다. Spring Boot JPA 에서 페이징 처리를 하려면 어떻게 해야할까? 지난시간 까지 만들었던 SpringbootApi에서 구현했다. 저번에 만든 BoardRepository를 수정하여 JpaRepository를 상속받게 BoardRepository를 생성하자 위 다이어그램에서와 같이 생성한 ..
53 : JPA로 삭제와 리스트 출력 review (Springboot + JPA) JPA로 쿼리작성 1 (삭제&리스트출력) 51 : JPA로 쿼리작성 (SpringbootApi) MyBatis - mapper로 쿼리를 가지고 오는 방법 말고 jap를 사용하여 쿼리를 실행해보자. 이전까지 만들어왔던 SpringbootApi에 작성한다. BoardJpa boardjap 디렉토리 안에 bo.. dwc04112.tistory.com 위 글은 내가 작성한 코드 리스트 출력 (isDel = "N" 값만 출력) // Service public List getBoardList() { return boardRepository.findBoardsByIsDel("N"); } // Repository @Repository public interface BoardRepository extends CrudRe..