스프링프레임워크
-
[JUnit] 테스트 클래스 안에서 변수 공유하기스프링프레임워크/junit 2021. 1. 21. 21:47
이번 시간에는 테스트 클래스 안에서 변수 값을 공유해서 사용하는 방법에 대해서 알아보도록 하겠습니다. 아래 테스트 케이스는 전부 성공적으로 종료됩니다. 그 이유는 각각의 test 함수가 호출 될 때마다 새로운 AddTest 객체가 생성되기 때문에 sum의 값은 각각의 test마다 1로 초기화 됩니다. @SpringBootTest public class AddTest { private int sum = 1; @Test void addingTwoReturnsThree() { sum += 2; assertEquals(3, sum); } @Test void addingThreeReturnsFour() { sum += 3; assertEquals(4, sum); } } 각각의 테스트 전에 호출되는 @BeforeA..
-
[JPA] ID 참조와 조인 테이블을 이용한 단방향 M:N 매핑스프링프레임워크/jpa 2021. 1. 14. 17:19
이번 포스트에서는 ID 참조를 이용해서 엔티티 간 단방향 M:N 연관 관계를 해결하는 방법을 알아보도록 하겠습니다. Product와 Category의 관계가 아래와 같다고 가정합니다. Product와 Category는 M:N 연관관계이다. 특정 Category에 있는 Product 정보 조회 기능이 필요하다. 특정 Product가 속해 있는 Category 정보 조회 기능은 필요없다. 위와 같은 가정하에서는 Product와 Category는 양방향 매핑 관계를 가질 필요가 없게되고, 단방향 매핑을 통해서 요구 사항을 만족 시킬 수 있게 됩니다. 이 때 엔티티간에 연관 관계를 맺을 수도 있지만 아래와 같이 ID 참조를 이용해서 더 간편하게 표현 할 수 있습니다. 우선 Product 클래스를 아래와 같이 구..
-
[JPA] 영속성 컨텍스트스프링프레임워크/jpa 2021. 1. 13. 23:24
EntityManagerFactory Client의 요청이 올 때마다 EntityManager를 생성합니다. EntityManager 데이터베이스 Connection을 사용해서 DB 처리를 진행합니다. Entity의 생명 주기 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 (managed) 영속성 컨텍스트에 Entity가 관리되는 상태 EntityManager.persist(entity) 아직 DB에 저장되지 않고 이후 transaction을 commit한 후에 DB에 저장됩니다. 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) 삭제된 상태 EntityManager em = emf.createEntityManager(..
-
[OpenFeign] 로깅 설정 하기스프링프레임워크/openfeign 2020. 12. 22. 16:53
이번 시간에는 OpenFeign을 이용하여 REST API 호출 시 Request, Response에 대한 로깅을 남기는 방법에 대해서 알아보도록 하겠습니다. 생성된 각각의 Feign 클라이언트에 대해서 logger가 생성되어집니다. 기본적으로 logger의 이름은 Feign 클라이언트를 생성하는데 사용되어지는 interface의 전체 클래스 이름입니다. Feign 로깅은 오직 DEBUG 레벨에서만 동작하게 됩니다. 클라이언트별로 설정할 수 있는 Logger.Level 객체는 아래와 같습니다. NONE : 로깅하지 않습니다. (DEFAULT) BASIC : Request Method와 URL 그리고 Reponse 상태 코드와 실행 시간을 로깅합니다. HEADERS : Request, Response He..
-
[JPA] QueryDsl에서 Pageable 객체를 이용한 Sort 방법스프링프레임워크/jpa 2020. 9. 9. 12:45
우선 Order, Path, fieldName을 전달하면 OrderSpecifier 객체를 리턴하는 Util 클래스를 작성해서 Sort시 마다 사용할 수 있도록 한다. Path 파라미터는 compileQuerydsl 빌드를 통해서 생성된 Q타입 클래스의 객체이다. Sort의 대상이 되는 Q타입 클래스 객체를 전달한다. import com.querydsl.core.types.Order; import com.querydsl.core.types.OrderSpecifier; import com.querydsl.core.types.Path; import com.querydsl.core.types.dsl.Expressions; public class QueryDslUtil { public static OrderSp..