12

SQLデータベースを必要とせずに、Hibernateを使用して永続オブジェクトをファイルシステムに保存したいと思います。

これは可能ですか?

4

7 に答える 7

4

HibernateはJDBC上で動作するため、必要なのはJDBCドライバーとそれに対応するHibernate方言だけです。

ただし、JDBCは基本的にSQLを抽象化したものであるため、使用するものはすべてSQLデータベースのように見え、歩き、震えます。1つを使用して、多くの頭痛の種を免れることもできます。さらに、そのようなソリューションは、サイズと複雑さがDerbyのような軽量のJavaDBに匹敵するものになります。

もちろん、Hibernateの使用を絶対に主張しない場合は、他にも多くのオプションがあります。

于 2012-01-04T12:08:40.843 に答える
2

JDBCプレーンテキストドライバを使用すれば、技術的には可能かもしれないようです。ただし、書き込みアクセスを提供するオープンソースのものは見たことがありません。sourceforgeで見つけたのは読み取り専用です。

于 2012-01-04T12:07:47.957 に答える
2

あなたはすでに実体モデルを持っています、私はあなたがこれもそれに含まれる関係も失いたくないと思います。エンティティモデルは、リレーショナルデータベースに変換されるように指示されています。

Hibernateおよびその他のJPAプロバイダー(EclipseLink)は、このエンティティモデルをSQLに変換します。JDBCドライバーを使用して、SQLデータベースへの接続を提供します。これ、あなたも維持する必要があります。

尋ねるべき正しい質問は次のとおりembedded Java SQL databaseです。Java内から開始できるものを誰かが知っていますか?このトピックで言及されているものはたくさんあります:

  • HyperSQL:結果をSQLクリアテキストファイルに保存し、他のデータベースに簡単にインポートできます
  • H2:バイナリファイルを使用し、JARファイルサイズが小さい
  • ダービー:バイナリファイルを使用
  • Ashpool:データをXML構造のファイルに保存します

小さなデータ用に1つのプロジェクトでHyperSQLを使用し、巨大なデータベース(2Gb以上)を使用するプロジェクトにApacheDerbyを使用しました。Apache Derbyは、これらの巨大なデータベースでより優れたパフォーマンスを発揮します。

于 2012-01-04T14:56:18.047 に答える
1

私はあなたの必要性を正確に知りませんが、多分それは以下の1つです:

1-ニーズがSQLから逃げるだけの場合は、NoSQLデータベースを使用できます。
Hibernateは、Hibernate OGM(http://www.hibernate.org/subprojects/ogm)を介してサポートします。Cassandra、MongoDB、CouchDB、HadoopなどのDBがいくつかあります...ここにいくつかの提案があり ます。

2-これで、データベースサーバーを使用したくない場合(サービスプロセスが常に実行されている場合)、ApacheDerbyを使用できます。他のSQLと同じようにDBですが、サーバーは必要ありません。単一のファイルを使用してデータを保持します。プログラムですべてのデータベースを簡単に移送できます。
見てください: http: //db.apache.org/derby/

3-本当にテキストプレーンファイルが必要な場合は、MichaelBorgwardtが言ったように行うことができます。しかし、この場合、Hibernateが良いアイデアかどうかはわかりません。

于 2012-01-04T12:31:49.500 に答える
0

さて、質問はまだ開かれており、OPは彼が新しいアプローチ/提案に開かれていると言ったので、ここに私のものがあります(少し遅れていますが大丈夫です)。

Prevaylerを知っていますか?これは、すべてのビジネスオブジェクトをRAMに保持し、ファイルシステムのスナップショット/変更ログを維持するJava普及実装です。これにより、クラッシュが発生した場合に最後の状態に復元され、すべての変更がに再適用されるため、非常に高速で信頼性が高くなります。それ。

また、アプリでのセットアップと実行は非常に簡単です。

于 2012-01-18T21:18:32.293 に答える
0

H2HyperSQLはどちらも、埋め込みモード(別のサーバーではなくJVM内で実行)とローカルファイルへの保存をサポートしています。これらはまだSQLデータベースですが、Hibernateでは他に多くのオプションはありません。

于 2012-01-04T13:16:29.193 に答える
-5

もちろんこれは可能です。JavaのファイルIO機能を使用するだけで、次の手順が必要です。-

  1. ファイルオブジェクトの作成2.FileInputStreamのオブジェクトを作成します(他のクラスを使用する方法はありますが)
  2. このオブジェクトをBufferオブジェクトでラップするか、単に。でラップしますjava.util.Scanner
  3. 前の手順で作成したオブジェクトの特定の書き込み関数を使用します。

Serializableオブジェクトはインターフェースを実装する必要があることに注意してください。次のリンクを参照してください

于 2012-01-04T12:00:01.247 に答える