20

私はいくつかのJPAのものをいじっており、マッピングを変更して、それらがどのようにあるべきかを確認しています。これは基本的な実験です。ただし、エンティティを単純に読み取り、テーブル スキーマを生成するツールが見つかりません。JBossツールでこのようなものを見つけようとしましたが、nada. Eclipse との統合は大きな利点ですが、コマンド ライン ツールまたは Ant タスクを使用します。

何か案は?

4

8 に答える 8

8

JPAでこれを行う普遍的な方法はないと思います。これを実現するには、基礎となるJPA実装を直接使用する必要があります。

Hibernateの場合、いくつかの可能性があります。

  • Hibernate にデータベース スキーマを自動的に更新させる、以前に投稿したメソッドduffymoを使用します。
  • それを望まない場合は、Hibernate Toolsのhbm2ddlツールを使用できます(注: リンクはひどいですが、ホームページは現在少し壊れているようです)。これを使用して、JPA エンティティからデータベース作成スクリプトを自動的に生成できます。自動的に起動する Maven および Ant 用のプラグインもあります。hbm2ddl

EclipseLink (以前の Oracle TopLink、JPA 2.0 RI) については、Using EclipseLink JPA Extensions for Schema Generation を参照してください。原理的には Hibernate に非常に似ていますが、一見したところ、DB スクリプトを作成するためのスタンドアロン ユーティリティとして使用できるものは何もありません。

他の JPA 実装 (BEA/Oracle Kodo、Apache OpenJPA) には、おそらくこれを実現するための固有の方法があります。

于 2009-04-22T23:31:10.590 に答える
6

Hibernate を使用するときは、これを構成ファイルに追加するだけです。

      <property name="hbm2ddl.auto">update</property>

すべてを処理します。JPA に相当するものが何であるかはわかりませんが、Hibernate の影響を大きく受けているため、同様のものが見つからない場合は驚くでしょう。

ツールは必要ありません。通常、単純な JUnit テストを実行するだけで、データベースが作成されます。

于 2009-04-22T23:08:42.997 に答える
6

Mavenプラグインによる:

        <plugin>
            <!-- run "mvn hibernate3:hbm2ddl" to generate a schema -->
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>hibernate3-maven-plugin</artifactId>
            <version>3.0</version>
            <configuration>
                <hibernatetool>
                    <classpath>
                        <path location="${project.build.directory}/classes" />
                        <path location="${project.basedir}/src/main/resources/META-INF/" />                                               
                    </classpath>   

                    <jpaconfiguration persistenceunit="galleryPersistenceUnit" />                     
                    <hbm2ddl create="true" export="false" destdir="${project.basedir}/target" drop="true" outputfilename="mysql.sql" format="true" console="true"/>
                </hibernatetool>
            </configuration>
        </plugin>
于 2013-08-27T12:29:04.010 に答える
4

Hibernate のorg.hibernate.tool.hbm2ddl.SchemaExportクラスとこの小さなメソッドを使用して

データベースにスキーマを生成します。

 public static void rebuildSchema()
 {
     configuration = new Configuration();
     configuration.configure();

     new SchemaExport(configuration)
         .setHaltOnError(true)
         .execute(false, true, false, false);
 }

外部ファイルに DDL を作成するには、この呼び出しをexecute.

     new SchemaExport(configuration)
         .setHaltOnError(true)
         .setOutputFile(outputFile)
         .setImportFile("")
         .setDelimiter(";")
         .setFormat(true)
         .execute(false, false, false, true);

"hibernate.hbm2ddl.auto" を "update" に設定するのは悪い形式と考えられています。これは、本番データベースを自動的に変更すると壊れる可能性があるためです。説明については、Hibernate hbm2ddl.auto の可能な値とその機能を参照してください。.

于 2012-04-28T18:24:52.393 に答える
2

James McMahonのリストに追加:

OpenJPAの場合:

<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
于 2012-04-28T12:49:30.447 に答える
2

DataNucleusには独自の SchemaTool があり、スキーマを生成したり、必要な DDL ステートメントを生成して自分で適応および適用したりできます。

-- アンディ ( DataNucleus )

于 2009-04-23T12:31:31.913 に答える
0

Antonio Goncalves は、彼のブログでスキーマを生成するための API について述べています。
JPA 2.1では、この目的のためにgenerateSchemaメソッドが導入されました。

ブログの例:

public class Main {
    public static void main(String[] args) {
        Persistence.generateSchema("samplePU", null);
    }
}
于 2015-09-29T15:55:20.680 に答える