0

JSF と Hibernate を使用する Web アプリケーションを作成したいと考えています。ローカルで作成したので、OpenShift サーバーにアップロードしたいと考えています。私は JSF/Hibernate が初めてで、どのように構成すればよいかわかりません。誰かが JSF と Hibernate を接続するいくつかの可能性を書くことができますか? ローカルで動作し、次のようになります。

persistence.xml

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="StudioBMPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>entity.article.Article</class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.connection.username" value="root"/>
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
      <property name="hibernate.connection.password" value="root"/>
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/studiobm?zeroDateTimeBehavior=convertToNull"/>
    </properties>
  </persistence-unit>
</persistence>

mysql との接続を担当するコード: パッケージ サービス。

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class DBManager {

    private static DBManager instance;
    private EntityManagerFactory emf;

    private DBManager() {}

    public synchronized static DBManager getManager() {
    if (instance == null) {
        instance = new DBManager();
    }

    return instance;
    }

    public EntityManagerFactory createEntityManagerFactory() {
    if (emf == null) {
        emf = Persistence.createEntityManagerFactory("StudioBMPU");
    }

    return emf;
    }

    public EntityManager createEntityManager() {
    return this.createEntityManagerFactory().createEntityManager();
    }

    public void closeEntityManagerFactory() {
    if (emf !=null) {
        emf.close();
    }
    }

}

Hibernate と接続する他の可能性はありますか? openshift git commit の前に persistence.xml ファイルをどこに配置すればよいか、誰かが知っているかもしれません。

4

2 に答える 2

1

接続値をpersistence.xmlで直接指定する代わりに、フィルタリングを使用し、ファイルで変数を使用する必要があります。ローカル ビルド中に、開発値をフィルター処理します。OpenShift にデプロイするには、OpenShiftの適切な値を定義するopenshiftプロファイルを作成します。OpenShift にプッシュしてアプリがビルドされると、openshiftプロファイルがデフォルトでアクティブ化されます。

于 2013-02-20T11:58:56.200 に答える
0

問題は、persistence.xml が間違った方法で構成されたことでした。私は EclipseLink を使用してデータベースに接続していますが、問題は javax.persistence.jdbc.* を構成用の名前空間として使用したことです。これを eclipselink.jdbc.* に変更すると、アプリがついに機能し始めました。

于 2013-03-04T06:23:35.200 に答える