Spring/코드로 배우는 스프링부트 웹 프로젝트
-
코드로 배우는 스프링부트 웹 프로젝트 Day 17Spring/코드로 배우는 스프링부트 웹 프로젝트 2022. 11. 11. 02:10
list.html Board List Page REGISTER ------ 제목 내용 작성자 제목 + 내용 제목 + 내용 + 작성자 Search Clear # Title Writer Regdate [[${dto.bno}]] [[${dto.title}]] --------------- [] [[${dto.writerName}]] [[${dto.writerEmail}]] [[${#temporals.format(dto.regDate, 'yyyy/MM/dd')}]] Previous [[${page}]] Next [ 게시물 등록 처리 ] 게시물의 작성자는 현재 존재하는 사용자의 이메일 주소로 지정해야 함 BoardController 에서는 GET 방식으로 동작하는 링크와 POST 방식으로 실제 처리하는 메서드를 추..
-
코드로 배우는 스프링부트 웹 프로젝트 Day 16Spring/코드로 배우는 스프링부트 웹 프로젝트 2022. 9. 21. 00:07
/* Annotation들은 스프링부트 프로젝트의 Annotation 정리 페이지에 따로 정리해두었습니다. */ [ 게시물 조회 테스트 ] BoardServiceTests 클래스 추가 @Test public void testGet() { Long bno = 100L; BoardDTO boardDTO = boardService.get(bno); System.out.println(boardDTO); } [ 게시물 삭제 처리 ] 게시물을 지우는 상황에서 게시물에 댓글이 없다면, 게시물의 작성자가 삭제하면 문제가 없지만, 게시물에 댓글이 있다면, 해당 댓글의 사용자들의 동의 없이 삭제되기 때문에 문제가 발생함 => 실제 개발에서는 게시물의 상태를 칼럼으로 지정하고, 해당 상태를 변경하는 형태로 처리하는 것이 일..
-
코드로 배우는 스프링부트 웹 프로젝트 Day 15Spring/코드로 배우는 스프링부트 웹 프로젝트 2022. 9. 19. 09:56
/* Annotation들은 스프링부트 프로젝트의 Annotation 정리 페이지에 따로 정리해두었습니다. */ [ 게시물 등록 ] 게시물 등록은 BoardDTO 타입을 파라미터로 전달받고, 생성된 게시물의 번호를 반환하도록 작성 실제 처리 과정에서 DTO를 엔티티 타입으로 변환할 필요가 있음 => BoardService 인터페이스에 dtoToEntity()를 작성해서 처리 BoardService 인터페이스 public interface BoardService { Long register(BoardDTO dto); default Board dtoToEntity(BoardDTO dto) { Member member = Member.builder().email(dto.getWriterEmail()).buil..
-
코드로 배우는 스프링부트 웹 프로젝트 Day 14Spring/코드로 배우는 스프링부트 웹 프로젝트 2022. 9. 14. 13:19
/* Annotation들은 스프링부트 프로젝트의 Annotation 정리 페이지에 따로 정리해두었습니다. */ [ JPQL과 left (outer) join ] 목록 화면에서 게시글의 정보와 함께 댓글의 수를 같이 가져오기 위해서는 단순히 하나의 엔티티 타입을 이용할 수 없음 => JPQL의 조인(join)을 이용해서 처리 [ left (outer) join ] 스프링부트 2버전 이후에 포함되는 JPA 버전은 엔티티 클래스 내에 연관관계가 없더라도 조인을 사용할 수 있음 [ 엔티티 클래스 내부에 연관관계가 있는 경우 ] Board 엔티티 클래스의 내부에는 Member 엔티티 클래스를 변수로 선언하고, 연관관계를 맺고 있음 이러한 경우, Board의 writer 변수를 이용해서 조인을 처리함 BoardR..
-
코드로 배우는 스프링부트 웹 프로젝트 Day 13Spring/코드로 배우는 스프링부트 웹 프로젝트 2022. 9. 12. 19:57
/* Annotation들은 스프링부트 프로젝트의 Annotation 정리 페이지에 따로 정리해두었습니다. */ [ 연관관계 테스트 ] 현재 3개의 테이블이 PK와 FK의 관계로 이루어져 있기 때문에 테스트를 위한 데이터를 추가하는 작업도 PK 쪽에서부터 시작하는 것이 좋음 test 클래스들 생성 [ 테스트 데이터 추가하기 ] MemberRespositoryTests 에 MemberRepository를 주입 예제로 사용할 Member객체를 100개 주입 MemberRepositoryTests 클래스 package org.zerock.board2.repository; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.an..
-
코드로 배우는 스프링부트 웹 프로젝트 Day 12Spring/코드로 배우는 스프링부트 웹 프로젝트 2022. 9. 7. 21:57
/* Annotation들은 스프링부트 프로젝트의 Annotation 정리 페이지에 따로 정리해두었습니다. */ [ 연관관계와 관계형 데이터베이스 설계 ] 데이터베이스상에서의 관계를 해석할 때는 항상 PK(Primary Key) 쪽에서 해석 & 반영하면 혼란을 줄일 수 있음 [ PK로 설계, FK로 연관관계 해석 ] 회원, 게시물, 댓글의 관계를 PK를 기준으로 설계하면 다음과 같음 1. 회원이 있어야만 게시글 작성 가능 => 회원 테이블을 먼저 설계 2. 게시글을 작성할 때는 특정 회원과의 관계를 설정해주어야 함 3. 댓글은 게시글이 있어야만 작성 가능 => 게시글을 먼저 설계하고 댓글 테이블이 게시글을FK로 작성 게시물은 회원과 다대일 관계 (N : 1) 댓글은 게시물과 다대일 관계 (N : 1) J..
-
코드로 배우는 스프링부트 웹 프로젝트 Day 11Spring/코드로 배우는 스프링부트 웹 프로젝트 2022. 8. 26. 17:57
/* Annotation들은 스프링부트 프로젝트의 Annotation 정리 페이지에 따로 정리해두었습니다. */ GuestbookServiceImpl에서 목록을 조회할 때 사용하는 getList()는 기존의 코드를 조금 수정해서 작성 GuestbookServiceImpl 클래스 수정 @Override public PageResultDTO getList(PageRequestDTO requestDTO) { Pageable pageable = requestDTO.getPageable(Sort.by("gno").descending()); BooleanBuilder booleanBuilder = getSearch(requestDTO); // 검색 조건 처리 Page result = repository.findAl..
-
코드로 배우는 스프링부트 웹 프로젝트 Day 10Spring/코드로 배우는 스프링부트 웹 프로젝트 2022. 8. 25. 21:28
/* Annotation들은 스프링부트 프로젝트의 Annotation 정리 페이지에 따로 정리해두었습니다. */ [방명록의 수정/삭제 처리] 계획 Guestbook의 수정은 Post 방식으로 처리하고 다시 수정된 결과를 확인할 수 있는 조회 화면으로 이동 삭제는 Post방식으로 처리하고 목록 화면으로 이동 목록을 이동하는 작업은 Get 방식으로 처리. 기존에 사용하던 페이지 번호 등을 유지해서 이동! 수정과 삭제는 모두 '수정 및 삭제가 가능한 페이지'로 이동한 상태에서 수정과 삭제 중 선택을 해서 작업이 이루어짐 이를 구현하기 위해 GuestbookController에서는 조회와 비슷하게 Get방식으로 진입하는 'gusetbook/modify'를 기존의 read()에 어노테이션의 값을 변경해서 처리 @..