問題タブ [spring-orm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Spring HibernateDaoSupport は複数のセッションを作成します
Web アプリケーションに Struts2.3 + Spring 3.2.6 + Hibernate 3.X を使用しています。
アノテーションを使用してトランザクションを管理しています。私のDAOクラスは以下の通りです。
これらのメソッドはサービス層から呼び出され、以下のようになります。
上記のコードを実行すると、同じスレッドに対して異なるセッションが発生します。
出力:
このため、 method2() で例外が発生した場合、 method1() を使用して永続化されたデータは rollback ではありません。
春のトランザクション管理を失うことなく、スレッドに基づいて単一のセッションを取得する方法を教えてください(私が自分の HibernateFactory に行くと、Spring によるトランザクション管理が失われます)。
java - Spring 4.1 で spring-orm 3.2.4 を使用しても問題ありませんか
Spring 2.5 を使用して構築された古いアプリを Spring 4.x にアップグレードしています。アプリは IBatis (現在は myBatis) を使用しています。Spring orm 4.x は、サポートするクラスを削除したため、Ibatis をサポートしなくなりました。Spring 3.2.4 にはまだあります。Spring-orm (3.2.4) の古いバージョンで新しいバージョン (4.x) の Spring (webmvc、web、context など) を使用しても安全かどうか疑問に思っていました。Ibatis を Mybatis にアップグレードすると、プロジェクトの範囲が広がります。今のところ対象外です。
java - バッチ処理の Hibernate.find() クエリを高速化しますか? (そしてメモリ使用量を減らします)
データベースビューに対する直接SQLクエリを使用するJava 1.4から、Java 8、ドメインオブジェクト、および休止状態を使用したorm永続性に移行しました。
私のバッチ プロセスは、データベースから 300,000 行を読み取る必要があり、次のようになります。
ただし、これは非常に遅く (データベース クエリの 30 秒に対して 9 分)、多くのメモリを消費します。
休止状態をオンにするshow_sql
と、3 つの異なるテーブルからドメイン オブジェクトをロードするのに多くの時間を費やしていることがわかります (ウィジェットには Wobjet と Wudget が含まれています)。
そして、私は全体を必要としないのでlist
(行ごとにバッチ処理を行うことができます)、私は疑問に思います:
よりメモリ効率の高い(そしてより速い)休止状態のある種のResultSetはありますか?
ちなみに、Spring Batch を使用しており、バッキング データベースは Oracle です (ただし、これは変更される可能性があります)。
HibernateTemplate
レイヤー内の他のすべての操作は同じテンプレートを使用するため、可能であれば、 でこれを操作する方が簡単ですDao
(ただし、これは大量のデータをバッチ処理する最初の操作です)。
java - org.springframework.beans.NotWritablePropertyException: Bean クラスの無効なプロパティ 'configurationClass'
新しい休止状態バージョンに移行しようとしています
構成で私は交換しました
1
と
2
と
その結果、アプリケーションを起動すると、次のエラー メッセージが表示されます。
PS
休止状態の依存関係:
hibernate - HibernateDAOSupport と HibernateTemplate の比較
HibernateTemplate よりも HibernateDAOSupport が提供する利点を理解しようとしています。HibernateTemplate はほとんどすべてを行います。それでは、なぜ hibernateTemplate を注入して操作を行うのではなく、HibernateDAOSupport と getHibernateTemplate を拡張して操作を行う必要があるのでしょうか。DAO クラスが HibernateDAOSupport を拡張することで得られる利点は何ですか。
HibernateDAOSupport と HibernateTemplate を使用することはお勧めできませんが、違いを理解しようとしているだけです。
java - Spring 4 + HIbernate 4 + Junit @Transactional ネイティブ SQL クエリ
こんにちは、いくつかの JUnit テストで Spring Hibernate セッション管理に問題があります。
各テスト メソッドの自動ロールバック機能を使用するために、@Transactional として署名されたテスト クラスがあります。テスト中にデータベースに 3 つの行を挿入し、(session.createSQLQuery() を使用して) ネイティブ クエリを実行すると、保存した 3 つの要素すべてを含むリストが返されますが、ネイティブ クエリの結果は常に空です。
@Transactional をテスト クラスから削除して、挿入プロセスがコミットで終了するようにしました。このシナリオでは、ネイティブ クエリは完全に機能し、テストは緑色ですが、ロールバックは実行されません (@Transactional がないため)。
個人的には、 @Rollback(false) でテストに署名せず、手動でデータを削除したいので、この奇妙な動作が不適切な構成によって引き起こされたのではないかと考えていました。
前もって感謝します。
私のSpringセッションとトランザクションマネージャーの構成の下で、問題のあるテストとテスト中のネイティブクエリ。
春の設定:
テスト中のメソッド
テストコード:
java - persistence.xml が見つかりません
spring-orm と hibernate で jpa を使用しようとしています。
TRADES テーブルを含む mysql db があります。jpaを使用してこのテーブルを操作しようとしています。persistence.xml を使用して EntityManager の作成をテストしようとしましたが、「[persistence-unit-name from persistence.xml] という名前の EntityManager の永続化プロバイダーがありません」という例外が発生しました。 .xml ファイルが見つかりません。
この構成をテストしようとすると、私が思うに、persistence.xml が見つからないという例外が発生します。
なぜこれが起こっているのかわかりません。私たちを手伝ってくれますか?ありがとう。
テーブル:
このテーブルのエンティティ クラス:
そして、src/main/resources/META-INF の persistence.xml
これはテストクラスです:
build.gradle からの依存関係:
java - Hibernate 経由でエンティティを保存する際の org.hibernate.WrongClassException
この質問では、Hibernate 4.3.4.Final および Spring ORM 4.1.2.RELEASE を使用しています。
次のような CardInstances のセットを保持する User クラスがあります。
いくつかの種類のカードがあり、それぞれ次のように Card 基本クラスと CardInstance 基本クラスをそれぞれ拡張します。
UnitCardInstance または HeroCardInstance をカード コレクションに追加してエンティティを保存すると、すべて正常に動作します。しかし、AbilityCardInstance をコレクションに追加してエンティティを保存すると、org.hibernate.WrongClassException で失敗します。投稿の下部に正確な例外とメッセージを追加しました。
いくつかの質問を読みましたが、基本クラスのコレクションを操作しているときに遅延読み込みが問題になるようです。そのため、カードを追加して保存する前に User エンティティを読み込む方法は次のとおりです。
「cards」
のデータベース エントリ 「cardinstances」のデータベース エントリ
この問題を解決する方法の手がかりを事前にありがとう。追加情報が必要な場合は、喜んで質問を更新します。