-
[JAVA] Reflection을 이용해서 객체 인스턴스 생성하기
공통 기능 개발 중 불특정 객체에 대한 인스턴스를 생성해야 했다. 자바의 Reflection을 이용해서 인자값으로 들어온 타입의 인스턴스를 생성해주도록 했다. 해당 부분에 대해 정리해본다. 코드 기본 생성자로만 생성하도록 만들었다. public도 isAccessible이 false로 항상 나오는데 이 부분은 더 확인이 필요하다. private <T> T getNewInstance(Class<?> clazz){ try { Constructor<?> constructor = clazz.getDeclaredConstructor(); ... Read More
-
[SPRING/JPA] Generic을 이용해 entity의 repository 찾아보기
기능 개발 중 reflection을 통해서 특정 entity객체를 생성하고 해당 entity의 repository를 찾아서 select를 해야하는 상황이 있었다. 모든 repository는 JpaRepository를 상속받고 있었고, 개별적으로 만든 쿼리는 다행히 없었다. 단순하게 해당 repository의 구현체를 찾으면 되는것이라 JpaRepository 상속 시 입력한 generic을 통해 찾기로 했다. 1. JpaRepository list 받기 JpaRepository 목록을 한 번에 입력 받는건 List로 autowired 해주면 된다. 모든 타입을 받기 위해 와일드카드를 사용했다. @Ser... Read More
-
[SPRING/JPA] Spring Data의 Example 활용하기 (QBE)
Spring data jpa를 사용하면 Example 이라는 객체를 이용해 데이터 조회(find, count, exist)를 할 수 있다. (Query by Example) example과 exampleMatcher라는 전략설정(?)을 이용해 해당 조건에 만족하는 데이터를 조회하는 기능이다. Example Example 정보 Example은 interface로 구현체는 TypedExample가 있다. 사용 할 객체는 제네릭로 설정되어있다. 선언 시 Example.of(객체)로 쉽게 생성이 가능하다. 기본적으로 설정되는 ExampleMatcher가 있지만, 사용자가 원할 경우 직접 생성해서 선언이 가... Read More
-
[SPRING/JPA] ID를 할당해서 save 할 때 왜 select 후에 insert를 할까?
새로운 프로젝트에서 JPA를 이용하기때문에 요즘 열심히 공부해보고 있다. mybatis만 썼던 나에게는 너무나도 헷갈리는 개념;; entity를 만들다보면 ID를 자동으로 생성할 때도 있고 직접 할당 할 때도 있다. 직접 할당 시 save를 할 때 혼란스러웠던 부분을 정리해본다. 혼란스러웠던 점 엔티티에서 ID를 직접 할당해서 사용을 했다. save 메서드를 이용하면서 너무나도 혼란스러웠던 것이 있었다. 새로운 entity를 save하는데 왜 insert 전에 select? id 자동 생성시에는 insert전에 select를 안하는데 직접 할당하면 insert전에 select를 하고있다. 왜? SA... Read More
-
[SPRING/JPA] JPA Repository가 정상적으로 DI 되지 않는 현상
오류 Description: Parameter 0 of constructor in com.my.service.MyService required a bean of type 'com.my.jpa.repository.MyRepository' that could not be found. Action: Consider defining a bean of type 'com.my.jpa.repository.MyRepository' in your configuration. entity 클래스와 repository가 생성했는데도 불구하고 데이터 주입이 되지 않는 현상이 발생했다. //entity 클래스 @Entity @... Read More