최근에 Java 프로젝트의 지속성 프레임 워크를 평가하고 선택했으며 결과는 다음과 같습니다.
내가보고있는 것은 JDO 를지지하는 지원 이 주로 다음과 같습니다.
- 비 SQL 데이터 소스, db4o, hbase, ldap, bigtable, couchdb (cassandra 용 플러그인) 등을 사용할 수 있습니다.
- SQL에서 비 SQL 데이터 소스로 또는 그 반대로 쉽게 전환 할 수 있습니다.
- 프록시 객체가 없으므로 해시 코드 () 및 equals () 구현과 관련하여 고통이 적습니다.
- 더 많은 POJO 및 따라서 더 적은 해결 방법이 필요합니다
- 더 많은 관계 및 필드 유형 지원
JPA 를지지하는 지원 은 주로 다음과 같습니다.
- 더 유명한
- jdo는 죽었다
- 바이트 코드 향상을 사용하지 않습니다
JDO를 사용하지 않는 것에 대한 약한 주장을 제공하는 JDO / Datanucleus를 분명히 사용하지 않은 JPA 개발자의 많은 pro-JPA 게시물이 표시됩니다.
또한 JDO로 마이그레이션하여 결과적으로 훨씬 행복한 JDO 사용자로부터 많은 게시물을보고 있습니다.
JPA가 더 널리 사용되는 것과 관련하여 이는 기술적으로 우수하지 않고 RDBMS 공급 업체 지원으로 인해 발생한 것으로 보입니다. (VHS / Betamax와 같은 소리가 나에게 들립니다).
JDO와 그것의 참조 구현 Datanucleus는 구글이 GAE를 위해 그것을 채택하고 소스 코드 (http://sourceforge.net/projects/datanucleus/)에서 적극적으로 개발 한 것처럼 명백히 죽지 않았다.
바이트 코드 향상으로 인해 JDO에 대한 많은 불만이 있었지만 왜 나쁜지에 대한 설명은 없습니다.
실제로 NoSQL 솔루션에 점점 더 집착하는 세상에서 JDO (및 데이터 핵 구현)는 훨씬 더 안전한 방법으로 보입니다.
방금 JDO / Datanucleus를 사용하기 시작했으며 db4o와 mysql을 쉽게 전환 할 수 있도록 설정했습니다. db4o를 사용하는 빠른 개발에 도움이되고 데이터베이스에 배포하기 위해 스키마가 안정화되면 DB 스키마에 대해 너무 걱정할 필요가 없습니다. 또한 나중에 애플리케이션의 전체 / 일부를 GAE에 배포하거나 너무 많은 리팩토링없이 분산 스토리지 / 맵 감소를 활용하여 라하베이스 / 하둡 / 카산드라를 줄일 수 있다고 확신합니다.
Datanucleus를 시작하는 초기 장애물이 조금 까다로웠다는 것을 알았습니다. datanucleus 웹 사이트의 문서는 조금 다루기가 어렵습니다. 튜토리얼은 내가 좋아하는 것처럼 쉽게 따라갈 수 없습니다. 그러나 API 및 매핑에 대한 자세한 문서는 초기 학습 곡선을 벗어나면 매우 좋습니다.
답은 원하는 것에 달려 있습니다. 오히려 더 깨끗한 코드, 벤더 잠금, 포지 지향, nosql 옵션이 더 대중적입니다.
다른 개발자 / 양의 대다수와 같은 따뜻한 느낌을 원한다면 JPA / 최대 절전 모드를 선택하십시오. 현장에서 리드하려면 JDO / Datanucleus 드라이브를 테스트하고 마음을 정하십시오.