使用を検討するJPAプロバイダーは2つだけです。
標準のJPAに固執したい場合は、EclipseLinkを使用します。ToplinkEssentialsはJPA1.0のリファレンス実装ですが、EclipseLinkは基本的にTopLink Essentialsコードを継承し、JPA 2.0のリファレンス実装になります(出荷時にGlassfish V3にバンドルされます。2009年5月にJavaOneでリリースされる予定です)。TopLink Essentialsは、Oracleの商用TopLink製品のやや機能不全のバージョンでしたが、EclipseLinkは基本的にTopLinkが持つすべての機能を備えています。
他の選択肢は明らかに休止状態です。その広く使用され、成熟していますが、私が見たものから問題がないわけではありません。たとえば、私が最後に見たHibernateには、複数の1対多の熱心な関係を持つエンティティに問題があります。HibernateにEclipseLinkのバッチクエリヒントと同等のものがあるかどうかはわかりませんが、この種の問題に対処するための非常に便利な機能です。
もちろん、Hibernateは標準のJPAもサポートしています。Hibernateの最大の利点は、Hibernateがどのように機能するかについて質問がある場合、Google検索で答えが見つかる可能性が高いことです。
私は正直に言って、上記の2つのプロバイダー以外は考慮しません。