2

たぶんこれはすでに回答されていますが、提案は見つかりませんでした...私のプロジェクトはSpringユーティリティプロジェクトであり、使用するデータベースはMySQLであり、永続化のためにHibernateをc3p0接続プーリングと組み合わせて使用​​ しています。私はSpring 3.2とHibernate 3.5を使用しています。ここで私がやりたいことは次のとおりです。JUnit テストをデバッグし、いくつかの永続化機能 (保存、更新など) をステップオーバーしてから、SQL を介してデータベース内のエントリを手動でチェックします。JUnit テストは常にトランザクションで実行されているため、テストが終了するたびにロールバックが発生する/コミットが発生しないため、データベースのエントリを確認できません。

トランザクションの存在を偽装する方法、または JUnit テスト中にそれらをバイパスする方法はありますか?

4

2 に答える 2

2

おそらく、デバッグ セッション中に Hibernate でトランザクションをフラッシュし、Spring/Hibernate にデータベースへの書き込みを強制することができます。

または、デバッグ セッションのトランザクションをオフにすることもできます。

于 2013-09-05T11:56:39.270 に答える
1

偽のトランザクションの存在ではなく、トランザクションの実行中にデータベースを調べる最良の方法は、ダーティ リードを許可する分離レベルでクエリを実行することです。これを行うメカニズムはデータベースごとに異なり、MySQL では次を使用できます。

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

照会する前に。

明らかに、テスト中に Hibernate にデータベースへの書き込みを強制的にフラッシュさせ、フラッシュ後にブレークポイントを設定する必要もあります。

于 2013-09-06T12:33:31.370 に答える