-
[JPA] Respository 만들 때 Not a managed type: class java.lang.Object 오류
오류 java.lang.IllegalArgumentException: Not a managed type: class java.lang.Object JPA에서 공통으로 사용 할 repository를 만드려고 했을 때 해당 메세지가 발생했다. 공통 repository를 만들어서 특정 기능을 공유하려고 했다. public interface CommonRepository<T, ID> extends JpaRepository<T, ID>, JpaSpecificationExecutor<T> { default List<T> something(){ ... } ... Read More
-
[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