Tag Archives: SpringData

Error: findOne 오류~ Optional Spring Data 1.x대비 2.x대에 크게 변한점

Message : Type mismatch Require Example<(???…)>

이상한 오류같은 메시지… kotlin 버전충돌 때문에 발생한 적이 있어서 그 부분을 찾았는데 이상해서 찾아보니 SpringData 문제였다.

분석

예전에는 이렇게 썼다.

이렇게 하면 CRUDRepository 내부의 T findOne(ID)가 호출이 됐는데

이 부분이 변경됐다.

CRUDRepository에는 Optional(T) findByID(ID)가 들어가 있다.

findOne을 호출하면

이녀석이 호출된다.

에러가 날 수 밖에..

처리

코드는 다 바꿔야 한다.

findById(ID).get()

이전코드를 그냥 써야하는 상황에서 쉽게 바꾸려면 이렇게만 해도 되고..

아니면 Optional을 활용하는 방안을 찾을 필요가 있다.

Null처리 문제 때문에 생긴 것 같다

SpringData, JPA, Hibernate 적용하기

그냥 프로젝트를 사용하는 경우에는 아주 쉽게 적용이 가능하다.

템플릿에 있는대로 설정하면 된다.

hibernate.cfg.xml을 classpath;~ 경로에 놓고 셋팅해준다.

—-설정방법은 검색, 또는 이클립스 기능을 따라가면서 완성 —-

 

MVC의 경우에는 스프링에서 관리하는 빈 형태를 유지해줘야하는데 이 때문에 설정이 더욱 복잡해진다.

임의로 Bean형태를 삽입하고튜토리얼에 있는 생성코드를 삽입해주면 간단하다.

윗쪽은 SessionFactory생성코드 아랫쪽은 entityManagerFactory생성코드… bean에 이 코드를 대충 쑤셔넣고 임의로 생성된 그 bean을 받아서 사용할 수도 있을 것 같다.
스프링에 연결하는 코드도 대략 그 형태일 것이라 짐작된다.

개발자라면…. 이런 조잡한 방법보다 조금 더 깔끔한 방법을 원한다.

위 방법을 사용하면 dao 코드도 만들어서 콜백을 쑤셔넣고 해야되는 귀찮음이 있다.

 

SpringFramework + SpringData(JPA프레임워크) + Hibernate

이렇게 하면 귀찮은 dao코드를 제거한 채로 코딩이 가능하다고 한다.