[解決済み] persistence.xml設定ファイルを使用しないJPA EntityManagerの作成
質問
を初期化する方法はありますか?
EntityManager
を永続ユニットが定義されていない状態で初期化する方法はありますか?エンティティ・マネージャを作成するために必要なすべてのプロパティを与えることができますか?エンティティ・マネージャーを作成するために
EntityManager
を実行時にユーザーの指定した値から作成します。を更新すると
persistence.xml
を更新して再コンパイルするという選択肢はありません。
これを行う方法についてのどんなアイデアでも、大歓迎です!
どのように解決するのですか?
を初期化する方法はありますか?
EntityManager
を初期化する方法はありますか?
を定義する必要があります。
少なくとも
で1つの永続化ユニットを定義する必要があります。
persistence.xml
デプロイメントディスクリプタに含まれています。
を作成するために必要なすべてのプロパティを与えることができますか?
Entitymanager
?
-
name属性は必須です。他の属性や要素は任意です。(JPA仕様)。ですから、これは多かれ少なかれ、あなたの最小限の
persistence.xml
ファイルであるべきです。
<persistence>
<persistence-unit name="[REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE]">
SOME_PROPERTIES
</persistence-unit>
</persistence>
Java EE環境では
jta-data-source
とnon-jta-data-source
要素は JTA および/または非 JTA データソースのグローバル JNDI 名を指定します。 を指定します。
したがって、対象となるアプリケーション・サーバが JTA (JBoss, Websphere, GlassFish) をサポートしている場合、あなたの
persistence.xml
は次のようになります。
<persistence>
<persistence-unit name="[REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE]">
<!--GLOBAL_JNDI_GOES_HERE-->
<jta-data-source>jdbc/myDS</jta-data-source>
</persistence-unit>
</persistence>
対象となるアプリケーションサーバーがJTAをサポートしていない場合(Tomcat)には、アプリケーションサーバー上の
persistence.xml
は次のようになります。
<persistence>
<persistence-unit name="[REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE]">
<!--GLOBAL_JNDI_GOES_HERE-->
<non-jta-data-source>jdbc/myDS</non-jta-data-source>
</persistence-unit>
</persistence>
データソースがグローバルなJNDIに束縛されていない場合(例えば、Java EEコンテナの外側)、通常はJPAプロバイダ、ドライバ、URL、ユーザ、パスワードのプロパティを定義することになると思います。
しかし
プロパティの名前はJPAプロバイダに依存します。つまり、JPAプロバイダがHibernateの場合、あなたの
persistence.xml
ファイルは次のようになります。
<persistence>
<persistence-unit name="[REQUIRED_PERSISTENCE_UNIT_NAME_GOES_HERE]">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.persistence.SomeClass</class>
<properties>
<property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="hibernate.connection.url" value="jdbc:derby://localhost:1527/EmpServDB;create=true"/>
<property name="hibernate.connection.username" value="APP"/>
<property name="hibernate.connection.password" value="APP"/>
</properties>
</persistence-unit>
</persistence>
トランザクションタイプ属性
一般に、Java EE環境では、トランザクションタイプとして
RESOURCE_LOCAL
は、JTA 以外のデータソースが提供されることを想定しています。Java EE環境では、この要素が指定されていない場合、デフォルトはJTAです。Java SE環境では、この要素が指定されていない場合、デフォルトのRESOURCE_LOCAL
が想定されます。
- Java SEアプリケーションの移植性を保証するため。 を明示的に列挙する必要があります。 永続化ユニットに含まれる管理された永続化クラス(JPA仕様)
を作成する必要があります。
EntityManager
を、実行時にユーザが指定した値から作成する必要があります。
だからこれを使う。
Map addedOrOverridenProperties = new HashMap();
// Let's suppose we are using Hibernate as JPA provider
addedOrOverridenProperties.put("hibernate.show_sql", true);
Persistence.createEntityManagerFactory(<PERSISTENCE_UNIT_NAME_GOES_HERE>, addedOrOverridenProperties);
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン