JPA는 데이터베이스 테이블과 자바의 클래스를 매핑시키는 ORM(Object Relation Mapping) 기술입니다.
SI의 데이터베이스는 JPA로 하기엔 너무 테이블과 컬럼이 많고 변경도 심하며 정규화도 안되어있습니다.
게다가 아무래도 직접 쿼리를 작성하는 개발에 익숙해진 사람들에게는 러닝커브도 존재합니다.
JPA의 메카니즘상 즉시로딩(EAGER) 과 지연로딩(LAZY) 이 존재하고, 이런것까지 생각하면서 개발을 하려면 더 오랜 시간이 걸립니다. 같은 데이터베이스 테이블간의 연관관계라고 해도 특정 화면에서는 즉시로딩을, 다른 화면에서는 지연 로딩을 해야 하는 경우도 있기 때문입니다.
복잡한 쿼리는 어차피 직접 짜야 합니다. join, distinct, union 과 group by 를 한번에 사용한 쿼리를 JPA로 작성하는 것은 자살행위에 가깝습니다.
JPA를 쓰면 데이터 핸들링을 자바에서 하기 때문에 비지니스 로직이 프로그램에 녹아들어갑니다. 이건 SI의 개발 철학에 맞지 않습니다.
SI에서 비지니스는 쿼리에 있어야 합니다.