2012-03-05 11 views
2

私は、Spring 3.0、hibernate 3.0を使用するプロジェクトに取り組んでいます。私のプロジェクトにはController、Service、DAOのレイヤーがあります。 Daos(休止状態で書かれている)はサービス層からアクセスされます。今では、JDBCとHibernateの両方を使う必要があります。休止状態の部分は約80-90%です。残りの10%のために、私は単純なJDBC(JdbcTemplateを使用することができます)を使用する必要があります。私にはどうすればよいでしょうか、私は休止状態とJdbcの両方を一緒にどうやって行くのですか?私はSeparation、Re-usabilityでデザインが必要です。また、Springでどのように実装するのですか?Spring Framework 3.0でHibernateとJdbcを使用する

ご迷惑をおかけして申し訳ございません。

ありがとうございました!

答えて

5

バウンダリJDBCと安全に混在させることができ、両方ともHibernateTransactionManagerで管理されるトランザクションを共有できるはずです。アクティブなトランザクションでスレッドにバインドされた接続を検出して再利用できるので、これを実現するにはバネテンプレートを使用する必要があります。何らかの理由で、別のjdbcベースのライブラリを(例えばgroovy sqlのように)ミックスに追加したい場合は、まだ春の間に行うことができますDataSourceUtils

唯一の潜在的な問題は、hibernateおよびspring jdbcテンプレートの両方が同じデータに対して動作する場合に発生する可能性があります。 Hibernateはデータベースの更新を遅らせ、spring jdbcは古いデータにアクセスします。この相互作用に関する私の経験は、古いバージョンのスプリングから来ており、この問題を今日解決するためのメカニズムがいくつかあるかもしれません。

+0

私はそれをどのように使用するのか教えていただけますか?どのように接続を取得し、どのようにそれを使用するための任意の例ですか? –

+0

spring jdbcを使用すると、手動で接続または管理する必要はなく、コールバック(行マッパー)を使用してデータを処理できます。説明と例については、優れた春のドキュメンテーションを参照することをお勧めします。 – mrembisz

+0

ありがとうmrembisz! –

1

私はこれが最良の答えではないかもしれないので人々が私の答えを改善することを願ってこの答えを書いていますので、コメントしてください。少しダウンhttp://www.java2s.com/Code/Java/JPA/UsingNamedNativeQuery.htm スクロールして、ファイルを見つける:Professor.javaあなたはこの例を使用することができます を

では、名前付きネイティブクエリ 例を使用することができます休止状態。この方法で、休止状態からネイティブクエリを起動できます。

+0

ありがとうオタク!単純なJDBCを使いたいと思っています。 –

+0

大丈夫DAOはオブジェクトです(カスタムレイヤを作成することをお勧めします)。データアクセスレイヤーを作成すると、Hibernateの機能とネイティブJDBCを必要に応じて使用できるようになります。 CRUDのようなハイバネート機能を使ってやりたい操作を実行するためのいくつかのメソッドセットを持っているこの別のレイヤー(インターフェース)を持っているか、カスタムのハイバネートクエリー(OR、Between、ANDなど)単純なJDBCクエリを取得するメソッドがあり、結果セット(Recordset)を返す – Geek

+0

同じDAOの実装が複数あるのですか?すなわち:PersonDaoHibernateとPersonDaoJdbc? – bvulaj

関連する問題