현재 Tomcat, Spring 4, Spring Security, MySQL 및 JPA w / Hibernate를 사용하여 작업중 인 프로젝트가 있습니다.
나는 ORM 제공자의 기본 구현을 매끄럽게 또는 최소한 덜 고통스럽게 만드는 것으로 생각한다는 관점에서 JPA를 선택했습니다. 이것이 자바 구현 커뮤니티의 기본 관점 인 구현에 대한 스펙 (JAX-RS)을 정신적으로 사용하고 있다고 말하고 싶습니다.
이것이 정말로할만한 일인지 궁금합니다. 필자가 Hibernate를 직접 사용한다면 기본 JPA 사양에 포함되지 않은 기능을 사용할 수 있기 때문에 약간의 힘을 얻게 될 것입니다.
내 우려의 일부는 YAGNI의 아이디어에서 비롯됩니다. 나는 본질적으로 특정 스타일과 방식으로 프로그래밍하고 있으며 (Hibernate 대신 JPA를 사용하여) 나중에 어느 시점에서 ORM 구현을 바꿀 수 있습니다. 나는 그것이 제품의 수명 동안 일어날 것이라는 것을 심각하게 의심하므로, 본질적으로 결코 이익을 얻지 못할 무언가에 노력을 기울이고 있습니다.
당신의 생각은 무엇입니까? JPA와 같은 경우 "인터페이스 프로그래밍"이 가치가 있습니까? 실제로 제품에서 전체 ORM 구현을 교체 한 적이 있습니까? 어쨌든 JPA 유출과 같은 추상화를 완전히 피할 수 있습니까? 나는 개인적으로 이미 데이터베이스 테이블을 정리하기 위해 단일 네이티브 SQL 호출을 가지고 있으며 JPA 사양 (메소드의 get / set 접두사 및 MEMBER OF의 차이점)에 내장 된 것과 같은 것들이 있습니다 기본 구현에만 바인딩하는 / IN을 사용하면 피할 수 있습니다.