http://code.google.com/intl/ko-KR/appengine/docs/java/gettingstarted/usingdatastore.html

 분산 웹 애플리케이션을 만들려면 고민할께 많은데 GAE를 사용하면 그럴 걱정은 할 필요 없단다. 매력적이다. 하지만 손수 분산 웹서버, 분산 DB 환경을 구축해보고 싶긴하다. 머 어쨋건;; 지금은 GAE 공부 중이니깐;; GAE가 알아서 분산, 복제, 로드 밸런싱을 해주기 때문에 개발자는 그냥 심플한 API만 사용해서 개발하면 분산 환경은 알아서 사용하게 된다.

GAE의 datastore도 그러한 서비스 중 하나인데 두 종류 API를 지원한다. 하나는 JDO 하나는 JPA. JDO는 오래전부터 표준이었고 JPA는 하이버네이트 영향으로 생긴 EJB 3의 표준인데... 어째 둘이 생긴게 비슷하다. JDO가 JPA를 따라서 변형된 것 같은 모습인데 실제로 그런건진 모르겠다. 그러거나 말거나.. 쓰기 편하고 기능이 좋으면 그만이다.
JPA를 쓸때 persistence.xml 설정 파일 만들듯이 JDO를 쓸땐 jdoconfig.xml 파일을 만든다. 이 파일에 대한 자세한 설명은 생략;
http://code.google.com/intl/ko-KR/appengine/docs/java/datastore/usingjdo.html
난 JPA를 쓰고 싶은데, 아니 사실은 하이버네이트를 직접 사용하고 싶은데;; 예제가 JDO라 어쩔 수 없이 일단은 따라해 보기로 했다. 
다음은 도메인 클래스를 만들고 매핑 정보를 애노테이션으로 설정한다. JPA랑 똑같다.  그 다음도 사실 똑같다. PersistenceManagerFactory에서 PersistenceMaanger를 가져가다 사용하면 된다. 하이버네이트로 치자면 SessionFactory에서 Session 가져다 쓰는거랑 비슷하다. JDO에도 HQL 같은 JDOQL이라는 쿼리 언어가 있다. 도무지;; JDO랑 JPA랑 구분이 되지 않는다. 똑같아 보인다. 이럴바엔 하나로 합치는 표준을 하나 만들고 그 API를 쓰게 하는게 좋치 않을까..