知识大全 hibernate的延迟加载通用方法
Posted 知
篇首语:上下观古今,起伏千万途。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 hibernate的延迟加载通用方法相关的知识,希望对你有一定的参考价值。
类名 HibernateUtil
package antbee j eemodel util;
import java lang reflect InvocationTargetException;
import java lang reflect Method;
import java util Collection;
import java util Iterator;
import springframework orm hibernate support HibernateDaoSupport;
public class HibernateUtil extends HibernateDaoSupport
/**
* 初始化POJO类
* @author @家军
* @param object POJO对象
* @param methodName 方法名称
* @return
* @version
*/
public void initialize(Object object String methodName) throws SecurityException NoSuchMethodException IllegalArgumentException IllegalAccessException InvocationTargetException
String[] methodArray = methodName split( \\\\ )
Method method = null;
Object initializeObject = object;
if(methodArray length == )
this getHibernateTemplate() lock(initializeObject hibernate LockMode NONE)
method = object getClass() getMethod(methodArray[ ] new Class[] )
initializeObject = method invoke(initializeObject new Object[] )
this getHibernateTemplate() initialize(initializeObject)
else
for(int i= ;i<methodArray length;i++)
method = initializeObject getClass() getMethod(methodArray[i] new Class[] )
initializeObject = method invoke(initializeObject new Object[] )
this getHibernateTemplate() lock(initializeObject hibernate LockMode NONE)
this getHibernateTemplate() initialize(initializeObject)
/**
* 初始化POJO类
* @author @家军
* @param object POJO对象
* @param methodName 方法名称数组
* @return
* @version
*/
public void initialize(Object object String methodName[])
throws SecurityException NoSuchMethodException
IllegalArgumentException IllegalAccessException InvocationTargetException
for (int i = ; i < methodName length; i++)
String[] methodArray = methodName[i] split( \\\\ )
Method method = null;
Object initializeObject = object;
if(methodArray length == )
this getHibernateTemplate() lock(initializeObject hibernate LockMode NONE)
method = object getClass() getMethod(methodArray[ ] new Class[] )
initializeObject = method invoke(initializeObject new Object[] )
this getHibernateTemplate() initialize(initializeObject)
else
for(int j= ;j<methodArray length;j++)
method = initializeObject getClass() getMethod(methodArray[j] new Class[] )
initializeObject = method invoke(initializeObject new Object[] )
this getHibernateTemplate() lock(initializeObject hibernate LockMode NONE)
this getHibernateTemplate() initialize(initializeObject)
/**
* 初始化POJO类
* @author @家军
* @param object POJO对象
* @return
* @version
*/
public void initialize(Object object) throws SecurityException NoSuchMethodException IllegalArgumentException IllegalAccessException InvocationTargetException
this getHibernateTemplate() lock(object hibernate LockMode NONE)
this getHibernateTemplate() initialize(object)
/**
* 初始化POJO类
* @author @家军
* @param collection POJO对象集合
* @param methodName 方法名称数组
* @return
* @version
*/
public void initialize(Collection collection String methodName[])
throws SecurityException NoSuchMethodException
IllegalArgumentException IllegalAccessException InvocationTargetException
for(Iterator i=erator() i hasNext()Wink
Object object = i next()
this initialize(object methodName)
/**
* 初始化POJO类
* @author @家军
* @param collection POJO对象集合
* @param methodName 方法名称
* @return
* @version
*/
public void initialize(Collection collection String methodName)
throws SecurityException NoSuchMethodException
IllegalArgumentException IllegalAccessException InvocationTargetException
for(Iterator i=erator() i hasNext()Wink
Object object = i next()
this initialize(object methodName)
这个方法的好外是 可以不在hbm xml的文件当中 指定为lazy=true这个模式 可以直接使用 使用方法如下
如果你使用SPRING 则需要把hibernateUtil注入其中
<bean id= hibernateUtilTarget class= antbee j eemodel util HibernateUtil >
<property name= sessionFactory >
<ref local= mssqlSessionFactory />
</property>
</bean>
<bean id= hibernateUtil parent= BaseTransactionProxy class= springframework transaction interceptor TransactionProxyFactoryBean >
<property name= target >
<ref local= hibernateUtilTarget />
</property>
</bean>
<! 配置基础事务 >
<bean id= BaseTransactionProxy class= springframework transaction interceptor TransactionProxyFactoryBean abstract= true >
<property name= transactionManager >
<ref bean= mssqltransactionManager />
</property>
<property name= proxyTargetClass >
<value>true</value>
</property>
<property name= transactionAttributes >
<props>
<prop key= * >PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
使用示例
如果你使用STRUTS 则需要这样
List what_ur_view = XXXManager find( ) //取得你要展示的对象
//如果这个对象当中有延迟加载的对象(SET)时 则需要如下加载就行
this hibernateUtil initialize(what_ur_view getTbShipmentSale )
//其中getTbShipmentSale是其对象(SET也可以操作)
在页面显示的时候 你就可以使用JSTL如下表述
<c:out value= $what_ur_view tbShipmentSale goodsReceivePersonPhone />//呵呵 是不是很爽呀
同样的方法 我们也可以对一个SET在页面进行显示 方法如下
<c:forEach items= $what_ur_view tbShipmentProductMappingSet var= ProductMapping varStatus= status >
<c:out value= $ProductMapping productNum />
<c:out value= $ProductMapping tbOutOfWarehouse outOfWarehouseNum />
</c:forEach>
//呵呵 支持多级嵌套
在ACTION当中则需要加入hibernateUtil initialize(what_ur_view getTbShipmentProductMappingSet()
new String[] getTbProduct getTbOutOfWarehouse
getTbProductConfigure ) 呵 如果你要是在HIBERNATE当中使用 这个就太简单了吧
怎么样?呵呵呵
cha138/Article/program/Java/ky/201311/28589相关参考
为了进一步优化Hibernate的性能可以使用 延迟加载技术管理数据抓取策略进行缓存管理等方面考虑来提高Hibernate的性能 延迟加载(load) 延迟加载(load)是Hibernat
Hibernae的延迟加载是一个非常常用的技术实体的集合属性默认会被延迟加载实体所关联的实体默认也会被延迟加载Hibernate通过这种延迟加载来降低系统的内存开销从而保证Hibernate的运行
本文对延迟加载在常用控件的实现做简单的描述 一在界面第一次显示时加载 最简单的延迟加载可以通过控件第一次显示时加载数据例如你有很多的页签只有用户切换到这个页签时才会加载数据 在NET的Con
Spring动态加载Hibernate映射文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb
这里延迟加载的意思是拖动滚动条时在图片出现在浏览器显示区域后才加载显示 大概的实现方式是在页面的load没有触发之前把所有的指定id的元素内的img放入到imgs中将所有的图片的src值
知识大全 如何实现lazyload的图片延迟加载功能(1/2)
如何实现lazyload的图片延迟加载功能lazyload的难点在如何在适当的时候加载用户需要的资源(这里用户需要的资源指该资源呈现在浏览器可视区域)因此我们需要知道几点信息来确定目标是否已呈现在客户
利用JS延迟加载百度分享代码,提高网页速度 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 发现很
<!doctypepublic"//wc//dtdxtransitional//en""/dtd/xtransitionaldtd"><xmlns=""><head>
Hibernate的延迟属性抓取 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 再次犯了没有仔细
Hibernate编写通用数据库操作代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!insert