43976


JPA(EclipseLink)を使って、SQLServer/Oracle/PostgreSQLのいずれでも利用できるJavaEEアプリケーションを作っています。  
その中で、どうしても上記3種を区別して処理を分ける必要が生じました。  
どうやったらアプリケーション上から動的に検出できるのか、何か方法はあるでしょうか？


CC BY-SA 4.0
2018-05-14T07:07:09.387
43972
2018-06-01T06:04:47.830
8078
question
java jpa
JPAで接続しているデータベースの種類を動的に識別する方法


動作確認してませんが、こんな実装で取得した`databaseProductName`で判別できないでしょうか。

[code]

    java.sql.Connection connection = entityManager.unwrap(java.sql.Connection.class);
    String databaseProductName = connection.getMetaData().getDatabaseProductName();
    
[/code]


CC BY-SA 4.0
2018-05-14T08:33:35.583
43976
2018-05-14T08:33:35.583
21092
43972
answer


申し訳ありません、EclipseLinkでしたね。eclipselink.target-databaseプロパティを使用してください。

<http://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/persistenceproperties_ref.htm#target-
database>


CC BY-SA 4.0
2018-06-01T06:04:47.830
44450
2018-06-01T06:04:47.830
28737
43972
answer