問題タブ [hibernate]
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 + Hibernate: 構成可能な PK ジェネレーターを使用するには?
Web アプリケーションには Spring + Hibernate を使用します。
この Web アプリケーションは、関連のない 2 つの運用サイトにデプロイされます。これら 2 つの運用サイトは Webapp を使用して Person データを並行して生成および使用します。
私がしなければならないことは、これら 2 つの無関係な本番サイトで生成された Person がすべて個別の PK を持っていることを確認して、いつでもこれら 2 つのサイトからの Person データをマージできるようにすることです。
私に課せられたさらなる制約は、これらの PK が に収まるということLong
です。そのため、UUID を使用できません。
私がやろうとしているのはS_PERSON
、ジェネレーターとしてシーケンスを持つ現在の休止状態のマッピングを変更することです:
配置サイトの Spring 構成ファイルに応じてPERSON_ID
、PK が異なるシーケンス (おそらくS_PERSON_1
と) から生成されるように、構成可能なものに変換します。S_PERSON_2
もちろん、
うまくいかないので、何か他のことを考え出さなければなりません...ジェネレーターは、シーケンスまたは別のものを順番に指す構成可能なBeanを指す必要があると思いますが、それを行う方法がわかりません...
アイデアや回避策はありますか?
ありがとう!
hibernate - Hibernate:現在のレコードと前のレコードの比較
インメモリ Hibernate エンティティの現在の値をデータベースの値と比較したい:
CODEBLOCK#1では、そのnewEntity.getProperty()="new value"
ANDを取得しますoldEntity.getProperty()="new value"
(もちろん、期待していoldEntity.getProperty()="old value"
ましたが)。実際、2 つのオブジェクトはメモリ内でまったく同じです。
いじって、それを取り除くようHibernateSessionFactory.getSession().evict(newEntity)
に設定しようとしました(比較のためだけに必要です):oldEntity=null
そして今、2つのエンティティは別個のものですが、もちろん私は恐ろしいorg.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session
.
何か案が?
EDIT:ダブルセッション戦略を試しました。HibernateSessionFactory
セッションのマップを実装するように変更した後...
oldEntity ノートを印刷しようとしているときに、単体テストがハングします... :-(
hibernate - UserType は Hibernate に参加します
この状況で、休止状態に「正しい」値に対して「正しいこと」をさせることは可能ですか?
問題は、prop が、結合されたテーブルで異なる表現を持つ UserType であることです。表 A では整数として表され、表 B では char として表されます。したがって、eq テストは、1 == 'a' が多いか少ないかを確認するために変換されますが、これは false ですが、1 または 'a' で表されるオブジェクトは同じである必要があるため、true と比較する必要があります。
java - エンティティクエリメソッド、「持続」メソッドなどをどこ (どのレイヤー) に配置するか?
いくつかの JPA/Hibernate エンティティを含む SEAM アプリがあります。そして、クエリ、永続化メソッドをどこに置くべきか疑問に思っています。
デフォルトの選択では、注入されたセッション Bean レイヤーに配置されているようです
しかし、エンティティ自体にメソッドが必要だと思います。長所/短所は何ですか?
- テスタビリティ?
- 素敵?
- パフォーマンス?
また、セッション Bean ではなくエンティティのメソッドから EntityManager などと対話するためのベスト プラクティスへのリンクを持っている人はいますか?
ベスト、アンダース
java - JPA/Hibernate エンティティ クラスと同期のベスト プラクティスは何ですか?
私が見た JPA/Hibernate エンティティ Bean クラスのほとんどの例では、明示的な同期が行われていないようです。ただし、トランザクションを構築するコンテキストで、これらのオブジェクトに対して getter/setter を呼び出すことは可能です。また、これらのメソッドを複数のスレッドで呼び出すこともできます (ただし、これは異常で奇妙なことかもしれません)。
複数のスレッドにまたがって構築されている場合、オブジェクトの状態への変更が失われる可能性があるようです。これは悲しいことです。
では、同期のベスト プラクティスを除外することはありますか? Hibernate のインストルメント化されたコードは適切な同期を処理していますか?
例として:
手裏剣のメソッドには同期が必要ですか? 私の忍者が手裏剣を失うことは絶対に望んでいません。
hibernate - アプリが永続化レイヤーまたはリポジトリを使用する場合、DBA の役割はありますか?
1 つのケースではHibernateを使用し、2 つ目のケースでは Hibernate と Javaコンテンツ リポジトリ(具体的にはJackRabbit ) の組み合わせを使用する 1 組のアプリケーションの再構築を行っています。
再設計の重要な課題はパフォーマンスの向上であるため、アプリケーションの設計と開発にDBAを導入する価値があるかどうか疑問に思っています。
実動データベースの管理に DBA を関与させることの価値について、私が疑問を呈しているわけではないことに注意してください。しかし、過去のプロジェクトでは、優れた DBA が設計およびコーディング フェーズに関与し、データ構造を最適化する方法を考え出し、ストアド プロシージャにコードを挿入することが不可欠でした。
しかし、データベース構造が Hibernate と JackRabbit によってほぼ完全に管理されていることを考えると、それらを最適化する余地はあまりありません。確かに、それらがうまく機能しないことがわかった場合、DBA は潜在的に問題を特定し、それらを改善するためにパッチを提出することができますが、アプリケーションの方法で多くのことをしたい (またはできる) かどうかはわかりません-特定のチューニング。
このタイプのアプリケーションでの DBA の役割について考えるもう 1 つの理由は、パフォーマンスの問題の大部分が永続化レイヤーの上にある可能性が高いことです。つまり、データベース、休止状態、または JackRabbit が遅すぎるということではありません。データを構造化してプッシュするのはあまり良くありません。これを修正するにはデータ モデリングが必要ですが、実装媒体はデータベース テーブルと SQL ではなく、XML ファイルと Java コードです。DBA は通常、この種のことについてよく知っていますか?
永続化レイヤーの上に構築されたアプリケーションの設計と開発において DBA の必要性を完全に否定できないのは、懐疑論です。事前にパッケージ化されたソリューションを使用することで、特定のアプリケーションのデータベース最適化の必要性が完全になくなるとは思えません。
キーポイントがありませんか?熟練した DBA は、休止状態の構成ファイルを微調整して、アプリの特定のユース ケースで非常に高速に処理できますか? DBA が DB 自体を手動で調整したり、インデックスを作成したりせずに、高負荷の Hibernate アプリを実行することを検討するのは狂気ですか? それとも、XML ベースのデータ モデルと抽象化された永続化レイヤーの最適化を専門とする新しい生き物が開発環境に登場するのでしょうか?
ajax - Spring + Hibernate ベースのアプリケーション バックエンドを純粋な HTML および AJAX ベースのクライアントに接続するにはどうすればよいですか?
AJAX で DAO のメソッドを呼び出したいです。私はそれでかなり新しいので、それを行うための最良の方法は何かを尋ねたいと思います。Bean を Web サービスとして公開し、jQuery などで呼び出すことはできますか? それは不可能だと思います:) Direct Web Remotingについても読んだことがありますが、どちらに進むべきかわかりません...
ここには経験豊富な人がたくさんいるので、方向性を教えてくれると思います..よろしくお願いします
java - ORA-00942: table or view does not exist : How do I find which table or view it is talking about
We're running a java/hibernate app going against ORACLE 10g in TESTING. Once in a while, we're seeing this error:
ORA-00942: table or view does not exist
Is there a way to find out which table/view(s) ORACLE is talking about ?
I know that I can add extra levels of logging in hibernate which will show all the SQL that it executes on ORACLE and then run that SQL to figure out which TABLE/VIEW is missing or missing permission. But given that it is in TESTING/STAGING, that will slow down performance.
Is there a simple way to narrow down on the Table/View Name ?
UPDATE :
Just so you know, I don't have control over the Oracle DB Server Environment.
I enabled Hibernate tracing/logging and found a VALID SQL. I even put Wireshark(which is a TCP packet filter) to see what hibernate actually sends and that was a valid SQL. So, why would Oracle complain about it once in a while and NOT always.
java - 複合キーを使用した Hibernate @ManyToMany マッピング
どちらも複合主キーを持つ 2 つのテーブル間で ManyToMany 関係をマップしようとしています。
そのため、LSFOCTB の休止状態モデル マッピングで、次のことを試しました。
ゲッター前。しかし、うまくいきません...遠隔コレクションにアクセスしようとしたときのエラーは次のとおりです。
ManyToMany リレーションシップで hibernate マッピングを機能させることができましたか? もしそうなら、私のマッピングの何が問題になっていますか? ご協力ありがとうございました !