2012-03-06 7 views
0

私はしばらくの間、Hibernateを使用しようとしています。私はそれが注釈マッピング能力(@Entity、@Columnなど)を持っていることを冬眠が好きですHibernateのようなフレームワークはありますが、キャッシュはなく、SQLを直接実行しますか?

しかし、私はそれが無効にすることができないと言ってキャッシングのアイデア(How to disable hibernate caching)が好きではありません。

また、データベースの一部のデータを挿入/削除/更新するときにSQLをデータベースに直接実行しないという「コミット対フラッシュ」というアイデアは全く気に入らない。

私のタイトルとして、注釈付きのHibernateなどのフレームワークはありますが、キャッシュはなく、SQLを直接実行しますか?このようなフレームワークがSpringで使用できるのであれば、良いでしょう。

実際には、Hibernateはキャッシュを無効にすることができますか、挿入/削除/更新するたびにダイレクトSQLを実行できる設定をいくつか持っていますか?

答えて

2

これらの機能は、デフォルトではオンになっています(最初はわからないとしても)。

しかし、あなたが本当にすぐにキャッシュとフラッシュのすべてを無効にしたい場合:

  • 使用sessionFactory.openStatelessSession() - このセッションは1レベルのキャッシュには何も保存されていない(と第二レベルのキャッシュはデフォルトでオフになっています)。このセッションでコレクションマッピングを操作することはできません。
  • session.setFlushMode(..)を使用して、非常にクエリの前に自動的にフラッシュするように設定します(むしろ落胆します)。

フラッシュモードはステートフルセッションにのみ使用できます。ステートレスセッションはすぐにフラッシュされます。

+0

答えをありがとう、私はこれを試してみましょう。 –

+0

spring-servlet.xml/hibernate.cfg.xmlでopenStatelessSessionを使用するように設定するにはどうすればよいですか? –

+0

は別のものであってはいけません - あなたはまだSessionFactoryを注入してからセッションを得ることができます – Bozho

1

あなたは少しより直接的であるMyBatis、探しているかもしれません。注釈ベースの例では、他にもありますがsee hereです。純粋なJDBCを使用することも、Springを使用している場合はSpringを使用することもできます。

私は「好きではないキャッシング」のことを理解していません。

+0

お返事ありがとうございます。とにかく、あなたはこの文を理解していないということを意味しましたか?「私は考えをキャッシングするのが好きではありません...」?これは、Hibernateによるキャッシュを使用しないことを意味します。 –

+0

@SurasinTancharoenあなたが言ったことを理解しましたが、キャッシングが良い考えではないと誰も思っていなかったのです。 –

関連する問題