Ключевым отличием является то, что JDO поддерживает модель расширенного домена (логика вместе с данными), фактически все постоянные классы могут иметь ссылку на текущий PersistenceManager, выпускать запросы, и, я полагаю, возможно не иметь постоянных полей по умолчанию.
JPA не поддерживает такой дизайн программного обеспечения. На самом деле каждая сущность не имеет ссылки на PersistenceManager, чтобы иметь ее, нужно прибегнуть к переменным ThreadLocal, что не очень элегантное и надежное решение.