あなたはPHPや.Netの世界から来ているようで、Javaでの作業に慣れていないようです(仕事に重点を置いて)。要するに、無料のランチはありません。あなたが春やRooを一目見て、これらが複雑すぎると結論づけていると、あなたはいくらか荒い時を過すかもしれません。 Javaは多くのフレームワークと柔軟性を提供しますが、あなたはその作業を行う必要があります。
私はWicketを愛していますが、多少の学習曲線はありますが、 Wicketは、実際のJavaコードですべてのビジネスおよび制御ロジックをテンプレート化して解決する優れたアプローチを持っています。また、Wicketには、非常に豊富なドキュメント、wiki、および例があるアクティブなコミュニティがあります。 Joril氏が指摘しているように、Wicketは、オブジェクトリレーショナルマッピング(ORM)や一般的なAFAIKの永続性に関連することはしません。このために何かを提供する拡張機能やWicket関連のプロジェクトがあるかもしれません。 JPAを使用してモデルクラスに注釈を付ける
<properties>
<spring.version>3.0.0.RELEASE</spring.version>
<wicket.version>1.4.10</wicket.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>com.springsource.org.apache.commons.dbcp</artifactId>
<version>1.2.2.osgi</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>com.springsource.org.apache.commons.pool</artifactId>
<version>1.5.3</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.mysql.jdbc</groupId>
<artifactId>com.springsource.com.mysql.jdbc</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>com.springsource.org.hibernate</artifactId>
<version>3.3.2.GA</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>com.springsource.javax.persistence</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>com.springsource.org.hibernate.annotations</artifactId>
<version>3.4.0.GA</version>
<exclusions>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>com.springsource.org.apache.commons.logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket</artifactId>
<version>${wicket.version}</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-spring</artifactId>
<version>${wicket.version}</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-extensions</artifactId>
<version>${wicket.version}</version>
</dependency>
: 使用Maven2をし、春(はい、春)とあなたのpom.xmlに以下の依存関係をインポートします。ここでは
はこれを取り組む方法についてのあなたのために私からのアドバイスですそのような/ Hibernateの注釈(いくつかの一般的な構造を示し単なる一例):
@Entity(name = "User")
@Table(name = "users", uniqueConstraints = { @UniqueConstraint(columnNames = { "email" }) })
@SecondaryTable(name = "user_picture")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String email;
private String name;
private String password;
@Lob
@Column(table = "users_picture", length = 524288)
private byte[] picture;
private Date birthDate;
private String phonenumber;
@ManyToOne(fetch = FetchType.EAGER)
private Address homeAddress;
@Enumerated(EnumType.STRING)
private Gender gender;
@CollectionOfElements(fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
private Set<Weekday> workdays = new HashSet<Weekday>();
あなたの注釈付きモデルクラスからデータベースを生成するために、Hibernate3の-のmaven-プラグインを使用してください。これは非常に時間を節約します。データベースはmaven2のテスト段階で生成されます。テスト・データなどをデータベースに埋め込むのに役立つ他のプラグイン(DBUnit)もあります(古い学校の.sqlスクリプトも使用できます)。モデル内で何かを変更すると、変更は自動的にデータベースに反映されます(コースの作成後)。これは開発中に大きくなります。
(私はフロントエンド、バックエンドとAPIのためのモジュールを搭載したマルチモジュールMavenプロジェクトを作成することを好む;これはあなたのバックエンドポンポンに行くだろう)あなたのPOMにこれを追加します。
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.0-alpha-1</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>
annotationconfiguration
</implementation>
</component>
</components>
<componentProperties>
<drop>true</drop>
<jdk5>true</jdk5>
<propertyfile>
target/classes/jdbc.properties
</propertyfile>
<skip>${maven.test.skip}</skip>
</componentProperties>
</configuration>
<executions>
<execution>
<phase>process-test-resources</phase>
<goals>
<goal>hbm2ddl</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
これは何を生成されたテーブルであります次のようになります。
+--------------------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| email | varchar(255) | YES | UNI | NULL | |
| name | varchar(255) | YES | | NULL | |
| password | varchar(255) | YES | | NULL | |
| birthDate | datetime | YES | | NULL | |
| phonenumber | varchar(255) | YES | | NULL | |
| gender | varchar(255) | YES | | NULL | |
| address | bigint(20) | YES | MUL | NULL | |
+--------------------------------+--------------+------+-----+---------+----------------+
すべての私の例
はの使用に基づいている(users_workdaysとusers_pictureは、このエンティティを参照する二次テーブルです) MySQLデータベース。古いRDBMSで置き換えることができます。
私は、これはあなたがa)は目を覚ますと灰の匂いを嗅ぐこと、b)ORMワイズ
歓声を高速化するために、あなたのWicketのプロジェクトを取得するのに役立ちます願っています!
PHPまたは.netから来ていない、私はJava開発者です。私は、Springにはかなり大きな学習曲線があり、奇妙なXML構成などがたくさんあると言うのは不合理だとは思わない。明らかに、Rooは複雑であると特徴づけるのは難しいでしょうが、多くの関係を追加するとすぐに足場に問題が発生しました。このプロジェクトが完了すると、文書や援助を安心させることはできませんでした。とにかくまだ成長していません。あなたの答えをありがとう:私は、これらの注釈とそれらがHibernateでどのように使われているかを詳しく見ていきます。 – IcedDante
これは固い答えですが、私は通常hibernate3-maven-pluginをスキップし、開発時には 'hibernate.hbm2ddl.auto = update'プロパティを使用します。そうすれば、私はすべてのビルドでMavenを実行する必要はなく、Hibernateは私のために更新します。プロダクションでは、代わりに 'hibernate.hbm2ddl.auto = validate'が必要です。 Hibernateを本番データセットでワイルドにすることは決して望ましくありません(たとえば、テーブルの名前変更は古いテーブルのドロップと新しいテーブルの作成として解釈され、プロセスでデータを失う)。その代わりにLiquiBaseを使用してください。 –
ブライアンありがとう!これは確かなコメントです( - : –