7

休止状態の注釈で注釈が付けられたクラスがたくさんあります。Maven、Hibernate、Spring を使用しています。hibernate3-maven-plugin の hbm2ddl を使用して DB スキーマを生成するにはどうすればよいですか?

4

2 に答える 2

4

このような短い例:

<build>
<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>hibernate3-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
      <components>
        <component>
          <name>hbm2ddl</name>
          <implementation>jdbcconfiguration</implementation>
        </component>
      </components>
      <componentProperties>
        <drop>true</drop>
        <configurationfile>/src/main/resources/hibernate.cfg.xml</configurationfile>
      </componentProperties>
    </configuration>
    <dependencies>
      <dependency>
        <groupId>jdbc.artifact.groupid</groupId>
        <artifactId>jdbc-driver</artifactId>
        <version>1.0</version>
      </dependency>
    </dependencies>
  </plugin>
</plugins>

そしてもちろん、ドキュメントを読むことは助けになったでしょう。

于 2010-10-27T06:51:50.267 に答える
4

プロジェクトの構造が次のようになっているとします。

.
├── pom.xml
└── src
    ├──メイン
    │ ├──ジャワ
    │ │ └──com
    │ │ └── スタックオーバーフロー
    │ │ └── Foo.java
    │ └── 資料
    │ └── メタINF
    │ └──persistence.xml
    └──テスト
        └──ジャワ

persistence.xml以下が含まれていること。

<persistence>
  <persistence-unit name="MyPu" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.stackoverflow.Foo</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.connection.driver_class" value="org.h2.Driver"/>
      <property name="hibernate.connection.url" value="jdbc:h2:mem:Q4029456-1.0-SNAPSHOT"/>
      <property name="hibernate.connection.user" value="APP"/>
      <property name="hibernate.connection.password" value="APP"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
    </properties>
  </persistence-unit>
</persistence>

次に、次の構成により、スキーマがビルドの一部としてエクスポートされます。

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.stackoverflow</groupId>
  <artifactId>Q4029456</artifactId>
  <version>1.0-SNAPSHOT</version>
  <properties>
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>3.4.0.GA</version>
    </dependency>
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <version>1.2.144</version>
    </dependency>
    ...
  </dependencies>
  <repositories>
    <repository>
      <id>repository.jboss.org-public</id>
      <name>JBoss repository</name>
      <url>https://repository.jboss.org/nexus/content/groups/public</url>
    </repository>
  </repositories>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>hibernate3-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <components>
            <component>
              <name>hbm2ddl</name>
              <implementation>jpaconfiguration</implementation>
            </component>
          </components>
          <componentProperties>
            <drop>true</drop>
            <!-- optional, but useful for later inspection -->
            <outputfilename>schema.ddl</outputfilename>
            <persistenceunit>MyPu</persistenceunit>
          </componentProperties>
        </configuration>
        <executions>
          <execution>
            <phase>process-classes</phase>
            <goals>
              <goal>hbm2ddl</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.2.144</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>

JPA を使用していない場合は、jpaconfigurationと を と にpersitence.xml置き換えannotationconfigurationます。src/main/resources/hibernate.cfg.xml

得られた出力の抜粋の下:

$ mvn プロセスクラス
[情報] プロジェクトをスキャンしています...
...
[INFO] --- hibernate3-maven-plugin:2.2:hbm2ddl (デフォルト) @ Q4029456 ---
...
テーブル Foo が存在する場合はドロップします。
テーブル Foo を作成します (id bigint はデフォルトで ID として生成され、名前は varchar(255)、主キー (id));
...
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報] ビルド成功
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
...
于 2010-10-27T07:52:53.333 に答える