2011-09-11 9 views
3

私は "軽量ORM for j2ee"を検索し、このページを見つけますhttp://java-source.net/open-source/persistence私の目標は、Hibernateよりも軽いORMフレームワークを見つけることです。また、自動テーブル生成や遅延初期化など、私にとって最も重要な休止機能のいくつかを提供し、テーブルやマップで苦労することはありません。コレクション。来るORMには、エラーやバグの解決方法をより迅速に見つけるコミュニティがあります。新しいormがデータベースを私から隠すことも重要です(SQLスキルが必要なく、より多くのOOになる必要があります)。 これまで私はiBatis(myBatis)とORMLiteに自分の選択肢を絞り込んだ。 私はこのORMをj2eeのデスクトップアプリケーションである私の新しいプロジェクトにしたいので、このormの起動時間を他のものよりも短くすることが重要です(Hibernateとは異なり、 http://www.mybatis.org/冬眠の代わりに軽量のORM - 堅牢で俊敏な

休止状態よりも軽いですが、まだあなたが望む機能を備えています。MyBatisの約どのようにテーブルがたくさん)

のthnx

+0

関連Tをマッピングしo質問:http:// stackoverflow。com/questions/5489799/fast-simple-to-learn-and-pojo-friendly-or-for-java、http://stackoverflow.com/questions/3491540/java-orm-for-a-read-only- db、http://stackoverflow.com/questions/450864/lightweight-java-persistence – Gray

+0

http://stackoverflow.com/questions/296587/light-weight-alternative-to-hibernate – Gray

+0

thnxと最も密接に関連しています。それらをすべて読んで、私が気にしていたものはなかったが、これまでにibatisを見つけた – MoienGK

答えて

8

誤解されている概念があるかもしれません。あなたは基本的にHibernateの代替案を探すのではなく、ORMの代替案を探しています。

Hibernateは、の適切なORMの試行のうちの1つです。 Hibernateは、オブジェクト/リレーショナル・ミスマッチのパラダイムののほとんどをで解決しようとします。これらは次のとおりです。団体

  • に関連するアイデンティティのサブタイプ
  • の粒度
  • 問題の

    • 問題問題
    • 問題

    データナビゲーションの問題は、より多くの情報のためJava Persistence with Hibernateを参照してください。

    合計すると、より軽いORMというものはありません。オブジェクトモデルにリレーショナルモデルをマッピングするのではなく、SQLステートメントをオブジェクトとメソッドにマップする代わりに、適切なORMソリューションまたはmyBatisのような他のソリューションがあります。

    そして、すべてのHibernate機能を使う必要はありません。あなたは、それをカスタムSQL、プレーンJDBCと混在させることができ、その機能のサブセットのみを使用することができます。

    EDIT1:程度遅い起動が

    間奏:私は現在、1 propietaryのORMソリューションで働いていますwhitch(Hibernateは厳しいほどスマートではないが)我々のアプリケーションのために特別にチューニングされました。最大の問題はスタートアップでもあります。データベース全体をオブジェクトにマッピングするだけでは簡単ではありません。

    今、Hibernateについてです。 Hibernateは起動時にCRUD SQL文を生成することもあります。大きなデータベースがある場合、これはパフォーマンスに影響を与える可能性があります。しかし、この起動SQL生成をオフにして、実行時に生成された動的ステートメントに を切り替えることができます。

    <class name="SomeClass" 
        dynamic-insert="true" 
        dynamic-update="true"> 
    ... 
    </class> 
    

    または休止状態の注釈付き:

    @Entity 
    @org.hibernate.annotations.Entity(
        dynamicInsert = true, dynamicUpdate = true 
    ) 
    public class SomeClass { ... 
    

    EDIT2:

    参照ブックJavaのカスタムSQLを混合に関するXML表記を使用して

    が、それはこのように実現することができますHibernateの永続性は、事実を深く説明します。第8章では、レガシー・データベースの操作について説明し、DMLの変更方法(カスタムSQLの場合と同様に、CRUDコードをカスタムSQLに置き換えることもできます)とDDL(汎用ランタイムDDL操作)のヒントを示します。あなたはそこを覗いてください:)

  • +0

    私は約1年間、休止状態を使用していますが、休止状態はORMですが、何らかの短期間で起動が遅くなる(この場合は非常に重要です)、代替手段Hibernateの場合、IMHO hibernateは工業用のORMの1つなので、「休止状態の代替」というフレーズは間違いではありません。 – MoienGK

    +0

    "そして、Hibernateのすべての機能を使用する必要はありません。カスタムSQL、プレーンJDBCと混在させることができ、その機能のサブセットのみを使用することができます。これどうやってするの?私は始めるためのヒントを与えることができますか? – MoienGK

    +0

    @dave私は答えを編集しました。詳細情報があります – Xorty

    0

    。それはよく確立された枠組みです(しばらく前にibatisと呼ばれていましたが、今は何年も存在しています)。 Alfresco開発者は、Alfresco CMSの4番目のバージョンでは、パフォーマンス上の理由から、休止状態からibatisに切り替えることがほとんどであると判断しました。

    +0

    Mybatisはデータベースを隠したり、SQLスキルを必要としません。良いフレームワークではないとは言えませんが、OPが望んでいるようには聞こえません。 –

    +0

    ええ、これは上記の私の選択肢の1つですが、周りのコミュニティは十分成熟していないと言います!彼らはまた、それがデータベースを隠すのではなく、休止状態ではないとも言います。私はちょうどこれらをオンラインで読んだ。 – MoienGK

    +1

    さて、クラッパーではありませんが、SQLを非表示にするためにORMを選択しても、それに何も対話しないようにしていれば、それに基づいてプロジェクトを遠くにすることはありません。優れたJava OO APIのようなより単純な永続性ソリューションを希望し、SQLについて気にしない場合、そこには他の非SQL-DBソリューションがあります。 open ldapのような素晴らしいopensource LDAPサーバーとJava ODMのSpring-LDAP(Springのフレームワークの人々が呼んでいるように、オブジェクトディレクトリマッピング)はどうでしょうか?またはnosqlデータベース。 –

    9

    私は@ Xortyの記事を読むまで、私はこの質問に答えるつもりはありませんでした。私はORMLiteをHibernateの軽量置換として書きました.Hibernateだけが「適切なORM」であり、Hibernateを正しく設定するかORMライブラリをまったく使用しないという唯一の選択肢には反対します。私たちは仕事でHibernateを使用していますが、私は外部のプロジェクトでそれを使うようになると重すぎると感じました。私は大きなAndroidユーザベースを持っています。なぜなら、モバイルデバイス上のHibernateはちょっとした過労ですからです。

    確かに、hibernateはORMLiteよりも優れた機能を備えていますが、より太っており、より多くの依存関係を持っています。 different ORM solution(そして多くの場合)は、異なる機能セット、依存性、速度、および全体的なコスト/利益を持っています。各開発プロジェクトは、の前にの3つのソリューション、特にORMと同じように重要なものと結婚します。

    これが役に立ちます。運が良かった。

    +0

    ormlite.orgの開始ページに記載されていないものは、ormliteのものです。カスケード更新など、javax.persistenceのすべてがサポートされているわけではないことに言及する価値があるかもしれません。 – jontejj

    0

    軽量のORMをお探しの場合は、jORMをお勧めします。私がプロジェクトに貢献してくれたので、私の答えは偏っていることに注意してください。

    主な理由は、我々は(の必要性)されている軽量な代替を書くことを決めた理由:

    • Hazzlefree構成
    • クリアトランザクションが画成
    • メモリ管理とスピード
    • シンプルなコード生成

    要するに、急速な発展。

    構成例

    BasicDataSource dataSource = new BasicDataSource(); 
    dataSource.setDriverClassName("org.postgresql.Driver"); 
    dataSource.setUrl("jdbc:postgresql://localhost:5432/moria"); 
    dataSource.setUsername("gandalf"); 
    dataSource.setPassword("mellon"); 
    Database.configure("moria", dataSource); // now there's a named database 
    

    例クエリ

    Goblin goblin = Record.findById(Goblin.class 42); 
    Goblin bolg = Record.find(Goblin.class, new Column("name", "Bolg")); 
    List<Goblin> goblins = Record.findAll(Goblin.class); 
    

    例カスタムクエリ

    Tribe tribe = new Tribe(); 
    tribe.setId(1); 
    String name = "Azog"; 
    Goblin azog = Record.select(
        Goblin.class, 
        "SELECT * FROM goblins WHERE name = #1# AND tribe_id = #2:id#", 
        name, // #1# 
        tribe // #2# 
    ); 
    
    関連する問題