3

Spring MVC + JSP + Hibernate を使用して、かなり単純な Web アプリを開発しています。開始するには、次のチュートリアルに従いました: http://www.cavalr.com/blog/Spring_3_and_Annotation_Based_Hibernate_4_Example

これは問題なく機能していますが、コードの冗長性が心配です。User エンティティをサポートするために、UserDao、UserDaoImpl、UserService、および UserServiceImpl もあります。大規模なエンタープライズ アプリケーションの場合、実際にこれが必要になる場合があることを理解しています。しかし、私の単純な Web アプリにとって、これは不必要な (そして望ましくない) 複雑さです。これらすべてを Python でもっと簡単に実現できます。

では、Hibernate に Active Record デザイン パターンを使用させる方法はありますか? 私がやろうとしているのは、ユーザーが基本クラスから get() のようなメソッドを継承することです。したがって、 User.get(userName) を実行できます

私は Hibernate に別の ORM を使用することに心を開いています。それが一般的な選択のように見えるので、私はそれから始めました。また、私がよく知っている Python SQLAlchemy に似ていると思われます。

また、DAO クラスを自動生成できる IDE プラグインなど、すぐに使えるソリューションにも心を開いています。

どんな提案でも大歓迎です!

ポール

4

3 に答える 3

2

spring roo を見てください。アクティブ レコード パターンを使用しています。

または (roo を見てから) 自分でビルドすることもできます。あなたに必要なのは:

  • インジェクションを有効にするためにエンティティで @Configurable (これには実際の AspectJ も必要です)

これを使用して、EntityManager または hibernateSession を注入できます

于 2013-06-21T12:44:15.773 に答える
1

jOOQを探していると思います。Python のSQLAlchemyを参照しているため、jOOQ は SQL 中心であるため、Hibernate よりもわずかに適している可能性があります。

Java でのもう 1 つの一般的な ActiveRecord 実装はActiveJDBC です。これは、(私の知る限り) インストルメンテーションを通じて探している種類のメソッドを提供します。彼らのウェブサイトからの例:

List<Person> people = Person.where("name = 'John'");
Person aJohn =  people.get(0);
String johnsLastName = aJohn.get("last_name");

(もちろん、私は jOOQ 開発者なので、この回答は偏っています)

于 2013-06-21T12:44:31.027 に答える