SQLデータベースを必要とせずに、Hibernateを使用して永続オブジェクトをファイルシステムに保存したいと思います。
これは可能ですか?
SQLデータベースを必要とせずに、Hibernateを使用して永続オブジェクトをファイルシステムに保存したいと思います。
これは可能ですか?
HibernateはJDBC上で動作するため、必要なのはJDBCドライバーとそれに対応するHibernate方言だけです。
ただし、JDBCは基本的にSQLを抽象化したものであるため、使用するものはすべてSQLデータベースのように見え、歩き、震えます。1つを使用して、多くの頭痛の種を免れることもできます。さらに、そのようなソリューションは、サイズと複雑さがDerbyのような軽量のJavaDBに匹敵するものになります。
もちろん、Hibernateの使用を絶対に主張しない場合は、他にも多くのオプションがあります。
JDBCプレーンテキストドライバを使用すれば、技術的には可能かもしれないようです。ただし、書き込みアクセスを提供するオープンソースのものは見たことがありません。sourceforgeで見つけたのは読み取り専用です。
あなたはすでに実体モデルを持っています、私はあなたがこれもそれに含まれる関係も失いたくないと思います。エンティティモデルは、リレーショナルデータベースに変換されるように指示されています。
Hibernateおよびその他のJPAプロバイダー(EclipseLink)は、このエンティティモデルをSQLに変換します。JDBCドライバーを使用して、SQLデータベースへの接続を提供します。これ、あなたも維持する必要があります。
尋ねるべき正しい質問は次のとおりembedded Java SQL database
です。Java内から開始できるものを誰かが知っていますか?このトピックで言及されているものはたくさんあります:
小さなデータ用に1つのプロジェクトでHyperSQLを使用し、巨大なデータベース(2Gb以上)を使用するプロジェクトにApacheDerbyを使用しました。Apache Derbyは、これらの巨大なデータベースでより優れたパフォーマンスを発揮します。
私はあなたの必要性を正確に知りませんが、多分それは以下の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が良いアイデアかどうかはわかりません。
さて、質問はまだ開かれており、OPは彼が新しいアプローチ/提案に開かれていると言ったので、ここに私のものがあります(少し遅れていますが大丈夫です)。
Prevaylerを知っていますか?これは、すべてのビジネスオブジェクトをRAMに保持し、ファイルシステムのスナップショット/変更ログを維持するJava普及実装です。これにより、クラッシュが発生した場合に最後の状態に復元され、すべての変更がに再適用されるため、非常に高速で信頼性が高くなります。それ。
また、アプリでのセットアップと実行は非常に簡単です。
もちろんこれは可能です。JavaのファイルIO機能を使用するだけで、次の手順が必要です。-
java.util.Scanner
。Serializable
オブジェクトはインターフェースを実装する必要があることに注意してください。次のリンクを参照してください、