본문 바로가기

Back-End/Spring22

Validator 인터페이스 사용 Spring boot 프로젝트 만드는 과정에서 Validator를 한번 써보기 위해서 적용을 시켜봤습니다.. 보통 특정 객체에 대한 검증을 하기 위해서 사용된다. Validator 인터페이스를 사용하기 위해서는 2가지 메서드를 오버라이딩해서 사용합니다. @Override public boolean supports(Class clazz) { } @Override public void validate(Object target, Errors errors) { } supports -> 어떤 클래스의 객체의 검증을 지원할 것인지에 대한 코드를 작성해야한다. validate -> 매개변수 target의 객체에 대하여 검증을 실행 한 후 문제가 있을 경우 errors 를 통해서 확인합니다. 예시코드 @Setter @.. 2021. 5. 20.
Spring boot @ControllerAdvice 쉽게 말하자면 컨트롤러 계층에서 AOP를 적용시키기 위한 어노테이션이라고 할수 있을것 같다. 해당 어노테이션을 주로 사용하는 예시에는 예외처리에 대한 코드가 대부분 있다. 컨트롤러단 메서드들의 코드들을 좀 더 단순화 시키고 가독성이 좋게 하기 위한 목적으로 쓰이는 편이다. 이 어노테이션과 비슷한 어노테이션이 하나 존재한다 -> @RestControllerAdvice 보면 눈치 채셨겠지만 차이점은 Rest한 메서드들에 적용시킬지 아닐지에 대한 것 뿐이다. 우선 2가지 정도의 예외를 직접 간단히 만들어보았습니다.. public class NotEnoughStockException extends RuntimeException { public NotEnoughStockException() { super("해당 .. 2021. 5. 17.
@QueryProjection 으로 Querydsl 작성 개발환경 - Gradle - Spring Boot - Postgresql 페이징 용도로만 사용하는 것인 줄 알았지만 내 착각이였다. 최근에 면접을 보고 해당 회사에서 Querydsl을 위주로 사용해서 개발하신다는 말을 듣고 짧게나마 사용했던 Querydsl을 공부해보고자 이번 개인 프로젝트 진행하면서 사용을 해봤습니다.. @Configuration public class QuerydslConfiguration { @PersistenceContext private EntityManager entityManager; @Bean public JPAQueryFactory jpaQueryFactory() { return new JPAQueryFactory(entityManager); } } 구글에 검색해서보면 J.. 2021. 5. 11.
JPA) @Entitygraph JPA를 사용하다보면 N+1 문제를 자주 마주치게 되는데 그에 대한 해결방안 중 하나인 @EntityGraph 처음에 강사님에게 배울때는 3가지정도가 있다고 들었다. 1. Fetch join 2. @Entitygraph 3. @Query에 의한 작성 간단하게 사용방법 정도만 포스팅하겠습니다. @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "order_item") @Getter @ToString(exclude = "item") @Entity public class OrderItem extends BaseEntity { @Id @GeneratedValue(strategy = Generat.. 2021. 5. 7.
Spring Data JPA 와 Postgresql 연동 빠르게 방법만 우선 포스팅 하겠습니다. 1. build.gradle 직접 프로젝트 생성시 의존성 추가를 하셔도 됩니다. 2. application.properties # Postgresql spring.datasource.url=jdbc:postgresql://localhost:5432/fowkr spring.datasource.username=fowadmin spring.datasource.password=fowadmin # JPA spring.jpa.hibernate.dialect = org.hibernate.dialect.PostgreSQL10Dialect spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.format_sql .. 2021. 4. 21.
Spring) 게시물 찜하기 기능 구현 - 데이터 전달 (1/2) 환경) sts3 , MySQL , MyBatis 게시물을 조회하고 해당 게시물을 저장할 수 있는 찜하기 기능을 구현하였다. 시큐리티를 적용시킬 경우 테스트하는데 복잡하기 떄문에 우선 임의로 로그인 사용자를 지정해서 하였다. 해당 기능의 로직은 다음과 같다. 1. 상세페이지의 찜하기 버튼을 클릭한다. -> 나는 fontAwesome에 있는 아이콘을 이용해서 만들었다. 2-1. 로그인한 사용자가 해당 게시물을 이미 찜한 상태라면 alert창을 생성 2-2 찜하지 않은 상태라면 confirm을 통해 찜리스트 페이지로 들어갈지 말지 결정. 3. 찜리스트 페이지에 찜한 게시물의 정보가 출력된다. * 구현코드 및 사진 1. DB 간단하게 사용자(userid)와 게시물번호(Cno - [PK])만 받아서 설계하였다. .. 2021. 3. 30.