페이징 구현하기 JPA 환경 구축시 설치했던 JPA 관련 라이브러리에 이미 페이징을 위한 패키지가 있다. org.springframework.data.domain.Page org.springframework.data.domain.PageRequest org.springframework.data.domain.Pageable 1) 리포지터리에 findAll 메서드를 추가한다. public interface QuestionRepository extends JpaRepository { Page findAll(Pageable pageable); } 이 때 임포트가 domain.Page이어야 한다. import org.springframework.data.domain.Page; import org.springframework.da.. 2022. 10. 27. Spring Boot Validation // null로 등록 불가능하게 하는 방법 Spring boot로 게시판이나 댓글을 구현할 때 빈 값으로 입력 못하게 하는 여러 방법은 여러가지가 있지만 form을 사용해서 입력값을 체크하는 방법이 있다. Spring Boot Validation 라이브러리 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation' } Spring Boot Validation을 설치하면 아래와 같은 애너테이션을 사용할 수 있다. @Size 문자 길이를 제한한다. @NotNull Null을 허용하지 않는다. @NotEmpty Null 또는 빈 문자열("")을 허용하지 않는다. @Past 과거 날짜만 가능 @Future 미래 날짜만 가능 @FutureOrPresen.. 2022. 10. 27. MAC m1 H2 Databases 설치 방법 https://www.h2database.com/html/download.html Downloads Downloads Version 2.1.214 (2022-06-13) Windows Installer (SHA1 checksum: 5f7cd83d394df5882ed01553935463a848979f29) Platform-Independent Zip (SHA1 checksum: 5ff027217098bf6c800ef96b98f3a381b320e53d) Version 2.1.212 (2022-04-09) Windows Installer (SHA1 check www.h2database.com 위 다운로드 링크로 접속한다. 내 경우는 2.1.212 버전을 설치했다. (최신꺼는 믿을 수 가 없어요..ㅎ) 설치하고.. 2022. 10. 26. Service가 필요한 이유 ? Service는 스프링에서 데이터 처리를 위해 작성하는 클래스이다. 서비스(Service)가 필요한 이유 모듈화 보안 엔티티 객체와 DTO객체의 변환 1.모듈화 어떤 컨트롤러가 여러개 리포지터리를 이용해서 데이터를 조회하고 가공하고 리턴할 때, 이런 기능을 서비스로 만들어 두면 컨트롤러에서는 해당 서비스를 호출해서 사용하면 된다. 서비스를 만들지 않고, 컨트롤러에서 구현하려 한다면 모든 컨트롤러가 동일한 기능을 중복으로 구현해야한다. =>서비스는 모듈화를 위해 필요하다 2. 보안 컨트롤러는 리포지터리 없이 서비스를 통해서만 데이터베이스에 접근하도록 하는것이 보안에 좋다. why? 해커가 컨트롤러를 해킹해서 제어할 수 있어도, 리포지터리에 직접 접근할 수는 없다. 3. 엔티티 객체와 DTO객체의 변환 엔티.. 2022. 10. 26. 자주 사용하는 타임리프 속성 1. 분기문 속성 분기문 속성은 다음과 같이 사용한다. th:if="${question != null}" 위의 경우 question 객체가 null 이 아닌 경우에 해당 엘리먼트가 표시된다. 2. 반복문 속성 반복문은 반복횟수만큼 해당 엘리먼트를 반복하여 표시한다. 반복문 속성은 자바의 for each 문과 유사하다. th:each="question : ${questionList}" 반복문은 다음과 같이 사용할 수도 있다. th:each="question, loop : ${questionList}" 추가한 loop 객체를 이용하여 루프 내에서 다음과 같은 속성을 사용할수 있다. loop.index - 반복 순서, 0부터 1씩 증가 loop.count - 반복 순서, 1부터 1씩 증가 loop.size -.. 2022. 10. 26. 이전 1 2 3 4 5 6 7 ··· 10 다음