ssh项目中遇到的懒加载的问题(终于解决啦!!!)

SpringBoot-SpringData-懒加载 SpringBoot-SpringData-懒加载,博文地址:http://blog.youkuaiyun.com/ABAP_Brave/article/details/53035313 立即下载

转载自:http://hellotommy.iteye.com/blog/809205  


 hibernate3.3.2+spring3.0.3+struts2.2.1

         懒加载(Load On Demand)是一种独特而又强大的数据获取方法,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用。(百度说的)

        通俗点,就是在找一个对象时不找出与他关联的对象,而是在需要相关联对象(或其属性)时才去数据库中找,也称之为延迟加载。

        一般来讲,我们是在many-to-one 的many设置lazy=false,这是hibernate自身提供给我们的。

        后来spring关起来session,我们可以换一种方式:OpenSessionInViewFilter

        OpenSessionInViewFilter是Spring提供的一个针对Hibernate的一个支持类

        一般我们可以这么在web.xml中直接配置

    

Xml代码   收藏代码
  1. <!-- Spring提供的避免Hibernate懒加载异常的过滤器  
  2.   让Session在请求解释完成之后再关闭,从而避免懒加载异常 -->  
  3.   <filter>  
  4.     <filter-name>openSessionInViewFilter</filter-name>  
  5.     <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>  
  6.   </filter>  
  7.   
  8. <filter-mapping>  
  9.     <filter-name>openSessionInViewFilter</filter-name>  
  10.     <url-pattern>/*</url-pattern>  
  11.   </filter-mapping>    

 

 

       这样就省去了很多麻烦,就不需要在每一个many地方设置lazy=false了

       这个方法应该很流行,我也是网上找来的。但偏偏我就是新手,直接拿过来用,项目部署了N次都不起效果,真是郁闷。每次报错:org.hibernate.LazyInitializationException: could not initialize proxy - no Session。

       很明显,session关闭了。悲剧

       当时就崩溃,为什么网上都这么说,却总是错误呢。

       知道今天我看到了这篇文章http://www.iteye.com/topic/32001

       突然恍然大雾。

       既然spring管起了sessionFactory,获得session必须也通过他才对呀,所以这部分的mapping 也应该放在struts2的mapping后面,经过这个类,然后执行真正的Action代码,最后根据情况将Hibernate的Session进行关闭。

      下面是完整的web.xml:      

     

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.       
  8.       
  9.     <!-- struts2 -->  
  10. <filter>  
  11.     <filter-name>struts2</filter-name>  
  12.     <filter-class>  
  13.         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
  14.     </filter-class>  
  15. </filter>  
  16.     
  17.     
  18.     
  19.     
  20. <!-- spring 整合struts2 -->  
  21. <listener>  
  22.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  23. </listener>  
  24. <context-param>  
  25.     <param-name>contextConfigLocation</param-name>  
  26.     <param-value>classpath:daoContext.xml,classpath:actionContext.xml,classpath:serviceContext.xml,classpath:applicationContext.xml</param-value>  
  27. </context-param>  
  28.   
  29. <!-- Spring提供的避免Hibernate懒加载异常的过滤器  
  30.   让Session在请求解释完成之后再关闭,从而避免懒加载异常 -->  
  31.   <filter>  
  32.     <filter-name>openSessionInViewFilter</filter-name>  
  33.     <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>  
  34.   </filter>  
  35.     
  36.     
  37.     
  38.   <!-- 以下2个mapping不可以调换位置 -->  
  39.     
  40.   <filter-mapping>  
  41.     <filter-name>openSessionInViewFilter</filter-name>  
  42.     <url-pattern>/*</url-pattern>  
  43.   </filter-mapping>    
  44.     
  45.     
  46.   <filter-mapping>  
  47.     <filter-name>struts2</filter-name>  
  48.     <url-pattern>*.action</url-pattern>  
  49.   </filter-mapping>  
  50.     
  51.       
  52.   <welcome-file-list>  
  53.     <welcome-file>index.jsp</welcome-file>  
  54.   </welcome-file-list>  
  55. </web-app>  

 

      ok,这样就省去在每个many配置lazy了。

搭建一个简单的 Django + Vue 项目 在本文中,我将为您详细介绍如何搭建一个简单的 Django + Vue 项目。Django 是一个使用 Python 编写的高级 Web 框架,而 Vue 是一个流行的 JavaScript 框架,用于构建用户界面。通过结合 Django 和 Vue,我们可以创建强大的全栈 Web 应用程序。创建 Django 项目设置 Django 后端创建 Vue 前端连接 Django 和 Vue让我们开始吧! 阅读详情

相关推荐

Overleaf+EndNote+BibTeX:手把手搞定Elsevier期刊投稿的参考文献格式(避坑指南)

本文详细介绍了如何利用Overleaf、EndNote和BibTeX三大工具无缝协作,解决Elsevier期刊投稿中的参考文献格式问题。从工具链配置、文献库导出、BibTeX文件优化到Overleaf集成与编译,提供全流程指南和常见问题解决方案,帮助学术新手高效完成Elsevier期刊投稿。

weixin_30616969的博客 509

SSH页面懒加载异常处理方法

使用SSH开发项目时如果从头至尾中规中矩的使用SSH提供的方法,由于模型对象之间的关联关系,解决懒加载问题肯定是必要的。这里提供如下几个方法:       1.不使用懒加载机制,这样的方法显然可以解决,但是Hibernate既然提供了懒加载机制来提高整体性能,却不去用它,如果对象的关联关系十分复杂,每次都不使用懒加载必然会大大加重服务器的负担。       2.一劳永逸解决懒加载问题,使用Sp

VICHOU_FA的博客 1179

基于 Python 的 LIF 模型:探索神经元同步与小世界网络

首先,我们定义了一个LIFNeuronself.soma.L = self.soma.diam = 12.6157 # 固定神经元形状self.cm = cm # 电容self.V_rest = V_rest # 静息电位self.V = V_rest # 初始化膜电位在初始化过程中,每个神经元被赋予初始的静息电位,并且其膜电位会在后续的模拟过程中动态变化。

qq_36224726的博客 1422

SSH框架---你不得不关注的“懒加载”--lazy

SSH框架---你不得不关注的“懒加载”--lazy

a7178077的专栏 1572

树莓派4B+DroneKit实战:手把手教你用Python控制无人机飞行(附避坑指南)

本文提供了一份详尽的树莓派4B与DroneKit配置实战指南,涵盖从硬件选型、软件环境搭建到Python编程控制无人机的完整流程。文章重点解决了ARM架构下的兼容性问题、MAVLink通信配置及端口管理等常见难题,并附带了实用的避坑指南和代码示例,帮助开发者构建稳定可靠的无人机控制系统。

weixin_29056781的博客 410

混响效果的编程实现:Schroeder混响模型与Moorer型混响

Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。通过调整各个反射器和全通滤波器的参数,可以实现不同的混响效果。

2301_79326857的博客 1081

SSH之懒加载异常解决方案

1、设置成即时加载 2、查询语句使用join fetch from Coupon coupon left join fetch coupon.users where coupon.id=:id coupon的List<users> users属性是懒加载,但是查询结果需要users的内容,则使用left join fetch 3、使用OpenSessionInView...

weixin_30526593的博客 170

pycharm下载continue插件接入DeepSeek的API,向其提问输出乱码,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2219

SSH中懒加载异常--could not initialize proxy - no Session

SSH进行关联的表进行显示时出现的问题,老是显示你的OGNL表达式错误,但是找了很久确实没错,在网上找了一下,下面的这个方法本人认为是最有效的方法(已经测试可以使用) 在web.xml中加入 程序代码 <filter> <filter-name>hibernateFilter</filter-name> <filter-...

weixin_34217773的博客 133

AD9613操作控制

输出250M时钟给AD9613,过FPGA ILA逻辑分析仪将AD9613采集的两个通道ADC数据250M数据显示出来。其中AD9613输出的是LVDS数据,通过select IO核转为并行数据。 一,搜索IP核:selectIO interface wizad ,并双击配置 配置为input,DDR模式,数据位宽为12bit,IO类型为差分,这里配置的是12对数据差分对。然后配置外部差分时钟。 将tap setting 设置为13,将时钟的边沿对准数据的中间,以免数据出错 二,

wangjie36的博客 4047

EndNote X9 参考文献附录列表 格式调整

EndNote X9 插入参考文献常见问题总结

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 2567

解决Mybatis设置懒加载后json转换异常问题

@Select("select r.name as rName,r.rule as global_rule,bg.group_name as groupName,bg.rule as local_rule,r.id as rId " + "from bin_info.bin_group bg join bin_info.region r on bg.r_id = r.id") @Results( value = { @Resul

fancunxin的博客 495

基于Flink的流式数据降维实现方案

理解为何实时场景需要降维(解决维度灾难)掌握Flink流处理与降维算法的结合方式学会用Flink实现一个可落地的流式降维系统覆盖内容包括:Flink流处理基础、降维算法选择(侧重在线算法)、Flink与降维的集成方案、实战代码示例,以及工业级场景的应用经验。本文从“为什么需要流式降维”出发,用“快递分拣”的生活案例引出核心概念;接着拆解Flink流处理、数据降维的底层逻辑;然后重点讲解“在线PCA”这一适合流式场景的降维算法,并用Flink实现一个完整的流式降维管道;

AI 领航者的博客 565

Hibernate懒加载问题的5种解决方案

** 1、Hibernate基础 ** Hibernate基础,传送门 ** 2、什么是Hibernate懒加载 ** 当我们查询一个对象的时候,在默认情况下,返回的只是该对象的代理对象,当用户去使用该对象的属性时,才会向数据库再一次发出查询语句。 例如,有一个对象是Employee,还有一个对象是Department。显然,对于Employee相对Department来说,是多对一的关系;而对于...

zhaohong_bo的专栏 8079

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Spring+Hibernate+Struts之懒加载问题的解决

前一段时间我参与的一个项目中使用了SSH(Spring2.5+Struts1.2+Hibernate3.1),对于数据库设计的很复杂,一大堆的外键,在测试的时候发现非常的慢,慢到难以忍受,最夸张的是一个计算投票结果并筛选复合条件的投票公告,点击后要等待30s,相信没人会想用这样的系统,这还是在本地机测试,虽然后来我简单的优化了一下投票存储和查询的方式,(响应时间降到了几秒),但是慢的真正原因并不在

汇集点滴 聚沙成塔 8154

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SSH项目中遇到的懒加载的问题

在SSH项目中经常遇到的懒加载的问题  ,我的一般解决都是在实体类中引用部分 加上@JSON(serilazied=false)  只知道这样解决,没有去深究过原因,现在想起来所以搜索了下 看到博友的文章写的很全面,长知识了  原文地址:http://blog.youkuaiyun.com/myfuturein/article/details/51153266 hibernate3

IT菜鸟报道的博客 705

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

懒加载异常的解决办法

最近在做一个项目,采用的是SSH2框架,要实现一个级联功能,具体实现如下: Department部门包括许多下级Department,在查询第一级Department时,一切OK,但是当查询第一级Department下的子Department时,出现了如下错误,其中Department.hbm.xml中的配置文件为         这里表示Department实体中有parent这个属

hello,黑豆先生 1万+

java懒加载异常的解决

在使用ssh框架时,要实现一个级联功能,映射关系 one-many,加载one一级时没问题,但要加载many级时,会出现懒加载异常的问题。org.hibernate.LazyInitializationException:could not initialize proxy - no Session; 因为hibernate默认为懒加载,把设置改为false,加载one时many也会被加载进

yangmaodehaozi1990的博客 2723

Hibernate懒加载在SSH项目中的配置及原理

Hibernate懒加载在SSH项目中 当使用懒加载的时候, 查找出来的对象中的数据如对象中的集合,它并没有加载出来,只有当对象调用的时候才会向数据库发出查询语句, 这就会造成在hibernate中得到一个查询出来的对象,当在action或者jsp页面取里面的数据, 这时候session已经关闭了,查询请求当然就发不出去了,抛出no session 异常解决: 为了解决这个问题,配置一

喜洋洋 2467

在ssh项目中遇到的懒加载的问题(终于解决啦!!!)

         hibernate3.3.2+spring3.0.3+struts2.2.1          懒加载(Load On Demand)是一种独特而又强大的数据获取方法,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用。(百度说的)         通俗点,就是在找一个对象时不找出与他关联的对象,而是在需要...

tommy小屋 441

hibernate懒加载和json插件冲突问题

一、问题描述 项目使用ssh框架,当获得一个list,然后用Gson插件转化为json时候出问题。出问题代码如下 public String chooseCustomer() { //1、通过service层获得顾客列表 List<Customer> list = customerService.chooseCustomer(likeString); //2、将顾客列表转化...

玉爷的博客 352

在ssh项目中遇到的懒加载的问题

hibernate3.3.2+spring3.0.3+struts2.2.1          懒加载(Load On Demand)是一种独特而又强大的数据获取方法,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用。(百度说的)         通俗点,就是在找一个对象时不找出与他关联的对象,而是在需要相关联对象(或其属

海水的记忆 848

SSH中解决NoSession问题

openSessionInView     org.springframework.orm.hibernate3.support.OpenSessionInViewFilter openSessionInView *.action

u011957679的专栏 5266

解决Hibernate懒加载的4种方式

本文总结了我在学习hibernate的过程中,解决hibernate懒加载问题的四种方式。 懒加载简述:当我们查询一个对象的时候,在默认情况下,返回的只是该对象的代理对象,当用户去使用该对象的属性时,才会向数据库再一次发出查询语句。 例如,有一个对象是Employee,还有一个对象是Department。显然,对于Employee相对Department来说,是多对一的关系;而对于Depart

Huhui's Blog 1万+

彻底解决SSH架构中的Hibernate懒加载问题

在客户端使用AJAX框架,服务端采用Struts2+Spring+Hibernate的架构中,

死牛崇拜的专栏 3万+

SSH框架之Hibernate的懒加载

一、面试题: get、load方法区别? 1、get(): 1)get:及时加载,只要调用get方法立刻向数据库查询。 2)get:Session关闭后,可以加载数据! 2、load(): 1)默认使用懒加载,当用到数据的时候才向数据库查询。 a)情况1:不执行sql语句 b)情况2:执行sql语句 2)Session关闭后,不能使用懒加载数据! 二、懒加载:

一点一滴 602
上一篇: java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI(***
下一篇: Tomcat 内存及控制台标题调整
myfuturein
博客等级 码龄16年 11粉丝 16原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值