hibernate普通字段延迟加载无效的解决办法
关联对象的延迟加载就不说了,大家都知道。 关于普通字段的延迟加载,尤其是lob字段,若没有延迟加载,对性能影响极大。然而简单的使用 @Basic(fetch = FetchType.LAZY) 注解并没有效果。hibernate对此的解释是Lazy property loading requires buildtime byt
关联对象的延迟加载就不说了,大家都知道。
关于普通字段的延迟加载,尤其是lob字段,若没有延迟加载,对性能影响极大。然而简单的使用 @Basic(fetch = FetchType.LAZY) 注解并没有效果。hibernate对此的解释是Lazy property loading requires buildtime bytecode instrumentation. If your persistent classes are not enhanced, Hibernate will ignore lazy property settings and return to immediate fetching.
而bytecode instrumentation的介绍可以参考http://www.correlsense.com/blog/java-bytecode-instrumentation-an-introduction/,本文不多作介绍。
正是因为我们的persistent classes没有使用bytecode instrumentation增强,才导致了普通字段无法延迟加载。
因此要改写一下。以下为一个使用了bytecode instrumentation的持久类:
public class PublicSchemeTaskFile implements java.io.Serializable , FieldHandled { // Fields /** * */ private static final long serialVersionUID = -8297912895820802249L; private Integer id; private PublicTask publicSchemeTask; private Integer fileType; private String fileName; private byte[] content; private FieldHandler fieldHandler;//用于延迟加载表字段,关联对象延迟加载的话无需此技术 @JSON(serialize = false) public FieldHandler getFieldHandler() { return fieldHandler; } public void setFieldHandler(FieldHandler fieldHandler) { this.fieldHandler = fieldHandler; } // Constructors /** default constructor */ public PublicSchemeTaskFile() { } /** minimal constructor */ public PublicSchemeTaskFile(Integer id) { this.id = id; } // Property accessors @Id @Column(name="ID", unique=true, nullable=false, precision=22, scale=0) @GeneratedValue(strategy=GenerationType.SEQUENCE,generator = "PUBLIC_SCHEME_TASK_FILE_SEQ") public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @JSON(serialize = false) @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="PUBLIC_TASK_ID") public PublicTask getPublicSchemeTask() { return this.publicSchemeTask; } public void setPublicSchemeTask(PublicTask publicSchemeTask) { this.publicSchemeTask = publicSchemeTask; } @Column(name="FILE_TYPE", precision=22, scale=0) public Integer getFileType() { return this.fileType; } public void setFileType(Integer fileType) { this.fileType = fileType; } @Column(name="FILE_NAME", length=50) public String getFileName() { return this.fileName; } public void setFileName(String fileName) { this.fileName = fileName; } @JSON(serialize = false) @Lob @Basic(fetch = FetchType.LAZY) @Column(name="CONTENT") public byte[] getContent() { if (fieldHandler != null) { return (byte[]) fieldHandler.readObject(this, "content", content); } return null; } public void setContent(byte[] content) { this.content = content; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; PublicSchemeTaskFile other = (PublicSchemeTaskFile) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } }
关键在于FieldHandled接口和lob字段的getter

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Win11 システムに中国語言語パックをインストールできない問題の解決策 Windows 11 システムの発売に伴い、多くのユーザーは新しい機能やインターフェイスを体験するためにオペレーティング システムをアップグレードし始めました。ただし、一部のユーザーは、アップグレード後に中国語の言語パックをインストールできず、エクスペリエンスに問題が発生したことに気づきました。この記事では、Win11 システムに中国語言語パックをインストールできない理由について説明し、ユーザーがこの問題を解決するのに役立ついくつかの解決策を提供します。原因分析 まず、Win11 システムの機能不全を分析しましょう。

スマートフォン技術が発展し続けるにつれて、携帯電話は私たちの日常生活においてますます重要な役割を果たしています。 Black Shark フォンは、ゲーム パフォーマンスに重点を置いたフラッグシップ フォンとして、プレイヤーから高い支持を得ています。ただし、場合によっては、Black Shark 携帯電話の電源が入らないという状況にも直面するため、この問題を解決するために何らかの措置を講じる必要があります。次に、Black Shark 携帯電話の電源が入らない問題を解決する方法を説明する 5 つのヒントを共有しましょう: ステップ 1: バッテリー残量を確認する まず、Black Shark 携帯電話に十分な電力があることを確認します。携帯電話のバッテリーが消耗している可能性があります

ソーシャルメディアの継続的な発展に伴い、Xiaohongshu はますます多くの若者が自分たちの生活を共有し、美しいものを発見するためのプラットフォームとなっています。多くのユーザーは、画像を投稿する際の自動保存の問題に悩まされています。では、この問題をどうやって解決すればよいでしょうか? 1.小紅書で公開するときに写真が自動的に保存される問題を解決するにはどうすればよいですか? 1. キャッシュをクリアする まず、Xiaohongshu のキャッシュ データをクリアしてみます。手順は次のとおりです: (1) 小紅書を開いて右下隅の「マイ」ボタンをクリックします。 (2) 個人センター ページで「設定」を見つけてクリックします。 (3) 下にスクロールして「」を見つけます。 「キャッシュをクリア」オプションを選択し、「OK」をクリックします。キャッシュをクリアした後、Xiaohongshu を再起動し、写真を投稿して、自動保存の問題が解決されるかどうかを確認します。 2. 小紅書バージョンを更新して、小紅書が正しく動作することを確認します。

コンピューターがドライバーを読み込めない場合、デバイスが正しく動作しないか、コンピューターと正しく対話できない可能性があることは誰もが知っています。では、このデバイスにドライバーをロードできないことを示すプロンプト ボックスがコンピューターに表示された場合、問題を解決するにはどうすればよいでしょうか?以下のエディタでは、問題を簡単に解決する 2 つの方法を説明します。このデバイスにドライバーをロードできません 解決策 1. スタート メニューで「カーネル分離」を検索します。 2. メモリの整合性をオフにします。上記のメッセージには、「メモリの整合性がオフになっています。デバイスは脆弱である可能性があります。」というメッセージが表示されます。戻るボタンをクリックして無視してください。使用には影響しません。 3. マシンを再起動すると、問題が解決することがあります。

Linux の中国語の文字化け問題は、中国語の文字セットとエンコーディングを使用する場合によく見られる問題です。文字化けは、ファイルのエンコード設定が正しくない、システム ロケールがインストールまたは設定されていない、端末の表示設定エラーなどが原因で発生する可能性があります。この記事では、いくつかの一般的な回避策を紹介し、具体的なコード例を示します。 1. ファイルのエンコード設定を確認します。ファイルのエンコードを表示するには file コマンドを使用します。ターミナルで file コマンドを使用して、ファイルのエンコードを表示します: file-ifilename。出力に「charset」がある場合

デフォルトゲートウェイが自動的に消えてしまう問題の解決方法 現代社会において、インターネットは人々の生活に欠かせないものとなっています。仕事でも娯楽でも、さまざまなタスクを完了するには安定したネットワーク接続が必要です。デフォルト ゲートウェイは、ローカル ネットワークを外部インターネットに接続する重要な要素の 1 つです。しかし、場合によってはデフォルトゲートウェイが自動的に消えてしまい、インターネットにアクセスできなくなるという問題が発生することがあります。では、デフォルトゲートウェイがなくなってしまった場合、どうやってこの問題を解決すればいいのでしょうか?まず、デフォルト ゲートウェイの概念を明確にする必要があります。デフォルトゲートウェイはネットワークルートです

タイトル: PyCharmが開けない問題の解決方法 PyCharmは強力なPython統合開発環境ですが、時々PyCharmが開けない問題に遭遇することがあります。この記事では、一般的な回避策をいくつか紹介し、具体的なコード例を示します。この問題に遭遇した方のお役に立てれば幸いです。方法 1: キャッシュをクリアする PyCharm のキャッシュ ファイルにより、プログラムが正常に開けなくなることがあります。この問題を解決するには、キャッシュをクリアしてみてください。道具

Huawei ブラウザがこの Web ページにアクセスできなくなった問題を解決するにはどうすればよいですか? Huawei モバイルブラウザを使用して特定の Web サイトにアクセスすると、アクセスが禁止されていることを示すプロンプトが表示され、ユーザーが関連コンテンツを正常に閲覧できなくなる場合があります。これはユーザーにとって非常に不便です。では、Huawei モバイル ブラウザ Web サイトへのアクセスが禁止されている状況に遭遇した場合はどうすればよいでしょうか?以下のエディターは、Huawei ブラウザ Web サイトへのアクセスが禁止されている問題の解決策を提供します。 Huawei Browser Web サイトへのアクセスが禁止されている場合の解決策 1. Huawei モバイル ブラウザを開いた後、下の三点アイコンをクリックし、[設定] をクリックします。 2. 設定を入力後、[セキュリティとプライバシー]をクリックします。 3. [セーフ ブラウジング]の右側のスイッチをオフにして、Web サイトのアクセス制限を解除します。以上がファーウェイのブラウザWebサイトへのアクセス禁止に対する解決策です。
