Spring Boot(42)
-
Spring Boot Exception Handling
기본적으로 Spring Boot에서 Exception이 발생하면 Basic Error Controller를 호출해서 해당 페이지가 나온다 이 페이지는 기본적으로 Execption이 발생하면 출력되도록 설정되어 있어서 기본적은 오류 내용을 표기해준다 다만 문제가 있는데무조건 Status Code가 500으로 나오고불필요한 내용이 많이 담기고내용도 명확하지 않고작동 방식이 컨트롤러를 한 번 더 호출하는 방식이라 필터나 인터셉터 관련 처리도 필요하다 package com.example.mvc.exception;import org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController;import org.springframewo..
2024.12.17 -
JPA란?
Java Persistence API는 자바에서 ORM 기술 표준으로 사용되는 인터페이스 모음이다.주로 사용할 때의 구현체는 Hibernate가 있다. 기본적으로 DB와 자바간의 통신은 JDBC를 이용해 이루어진다하지만 그냥 JDBC를 사용하면 불편하므로 객체와 DB의 매핑 ORM이라는 개념이 생겨났고이를 JPA를 통해 구현한다. JPA는 기본적으로 EntityManager을 통해 작동하는데이는 EntityManagerFactory를 통해 만들어지고이 EntityManagerFactory는 TransactionManager에 등록되어 있다. EntityManager는 데이터 베이스 연산과 영속성 관리를 담당하는데 기본적으로 Entity가 만들어지면 비영속 상태이다.이 상태에서 EntityManager..
2024.12.01 -
Spring Data DTO
DTO를 왜 쓸까? 1. 불필요한 데이터기본적으로 Entitiy는 DB의 테이블과 매칭되어 있기 때문에 레코드의 모든 컬럼이 들어있다.따라서 그냥 Entity를 넘겨주면 불필요한 데이터도 함께 제공하게 된다.이는 보안뿐만 아니라 성능 하락과도 이어진다. import lombok.AllArgsConstructor;import lombok.Data;@Data@AllArgsConstructorpublic class board_dto { private Long id; private String title; private String writer;} @Query("select new com.example.mvc.postgreSQL.dto.board_dto(data.id, data.title, da..
2024.12.01 -
JPA Paging
게시판을 만들면서 이때 동안은 모든 데이터를 읽어왔다 하지만 데이터의 양이 많으면 많을 수록 속도가 느려지고한 화면에 잡히지도 않으므로Paging을 도입해서 데이터를 일정량만 읽어오도록 헀다 JPA에서 Paging는 Pageable과 Page 클래스를 이용한다 Pageable은 조건을 지정하는 클래스고 Paging이 적용된 데이터이다. 예시) @GetMapping("") public String main_board_page( @RequestParam(name = "title", required = false) String title, @RequestParam(name = "page", defaultValue = "0") int page, @RequestPa..
2024.11.28 -
JPQL
Java Persistence Query Language JPA는 기본적으로 다양한 메소드를 지원한다. 그런데 그런 메소드로 부족할 경우 쿼리 만들어 요청을 보낼 수 있는데 보통 JPQL 이나 Query DSL을 사용한다 이번에는 JQPL을 사용해보도록 하겠다. @Repositorypublic interface postgre_reposiotory extends JpaRepository { @Query("select data from postgre_data data where :title is null or data.title Like %:title%") @SuppressWarnings("null") Page findAllByTitle(@Param("title") String title);..
2024.11.28 -
Spring Cloud Eureka
Eureka는 서비스 레지스트리와 서비스 디스커버리를 제공하는 역할을 한다. 우리는 API Gateway를 통하여 다양한 서비스에 접속한다.그런데 서비스의 상태가 정적일 경우는 고정된 주소로 찾아가면 되지만서비스의 주소가 바뀌면 API Gateway에 등록된 주소 또한 바뀌어야 한다.그리고 이러한 일은 AutoScaling, 생성 삭제, 확장등을 이유로 자주 일어난다. 이럴 때 필요한 것이 Service Discovery이다.우선 Service Registry에 최신의 서비스의 IP와 Port 정보가 저장된다.그 후 Service Discovery는 요청에 알맞은 서비스의 정보를 제공한다.API Gateway를 Eureka에 연동함으로서 서비스 IP와 Port가 변경되더라도 문제 없이 서비스를 제공할 수..
2024.10.29