Hibernate_懒加载特性
来源:互联网 发布:决策树算法例题经典 编辑:程序博客网 时间:2024/06/05 14:08
extra策略:与lazy="true"类似。主要区别是增强延迟检策略能进一步延迟Customer对象的orders集合代理实例的初始化时机:当程序第一次访问orders属性的iterator()方法时,会导致orders集合代理类实例的初始化当程序第一次访问order属性size(),contains()和isEmpty()方法时,Hibernate不会初始化orders集合类的实例,仅通过特定的select语句查询必要的信息,不会检索所有的Order懒加载:也叫延迟加载,不是在执行获取操作时马上生成SQL,而是在第一次使用时生成SQL.分成两种:类组级别:<class ... lazy="true/false">属性级别:<set/list/map/bag ... lazy="..."><man-to-ont ... lazy="..."><one-to-ont ... lazy="...">在使用懒加载特性时,可能会有LazyInitializationException异常:原因:真正的支获取数据时,Session已经没有了。解决办法:方式一:让Session在真正加载后再关闭方式二:或是在Session关闭前执行Hibernate.initialize(department.getEmployee());// 立即加载指定的懒加载对象
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- 导入包 --><hibernate-mapping package="cn.itcast.f_hbm_oneToMany"><!-- 类名 --><class name="Department" table="department"><id name="id" type="integer" column="id_"><generator class="native" /></id><property name="name" type="string" column="name_" /><!-- employee属性,Set集合,表达的是本类与Employee的一对多关系 class属性:关联的实体类型key子元素:对方表中的外键列(多方的那个表)inverse属性:默认为false,表示本方维护关联关系。如果为true,表示本方不维护关联关系。只是影响是否能设置外键的值(设成有效值或者是null值),对获取信息没有影响cascade属性:默认为none,代表不级联。级联是指操作主对象时,对关联的对象也做相同的操作可设为:delete,save-update,all,none ...lazy属性:懒加载,默认为true。true:懒加载,在张一次使用时加载。false:立即加载,在获取本对象时就加载这个集合的所有元素。extra:增强的懒加载策略--><set name="employee" cascade="all" lazy="true"><key column="departmentId" /><one-to-many class="Employee" /></set></class></hibernate-mapping>
@Testpublic void testLazy() throws Exception {Session session = sessionFactory.openSession();Transaction tx = null;Department department = null;try {tx = session.beginTransaction();// ------------------------------------department = (Department) session.get(Department.class, 1);System.out.println(department);// System.out.println(department.getEmployee().size());Hibernate.initialize(department.getEmployee());// 立即加载指定的懒加载对象// ------------------------------------tx.commit();} catch (RuntimeException e) {tx.rollback();throw e;} finally {session.close();}// 在使用懒加载特性时,要注意LazyInitializationException异常System.out.println(department.getEmployee());}
在授权时需要立即加载,平时延迟加载
0 0
- Hibernate_懒加载特性
- 【hibernate_延迟加载】
- Hibernate懒加载特性
- Hibernate_使用clone解决hibernate延迟加载问题及分析
- Hibernate_一级缓存_延迟加载_持久化
- ionic3新特性懒加载,lazyloading
- Hibernate_@注解
- Hibernate_笔记
- hibernate_简介
- Hibernate_组件关联
- Hibernate_树状映射
- Hibernate_知识点复习
- Hibernate_事件监听
- Hibernate_对象有三种状态
- Hibernate_主键生成策略
- Hibernate_使用注解
- Hibernate_注解说明
- Hibernate_事件监听
- 网络编程常见问题总结
- Totemsoft Components for WinForm 成员列表
- 说说 freemarker 的空白处理
- values[i] = new String(values[i].getBytes("ISO-8859-1"),"utf-8")中文乱码
- AIDL的使用
- Hibernate_懒加载特性
- C#重写控件使其透明背景
- 同步异步|阻塞非阻塞
- ExcelUtil
- android 开发 qq,微信,微博分享一步搞定
- EditTextView 带空格分隔的输入(电话号码,银行卡)
- 【Linux】Linux中常用操作命令
- java基础改学C++(六)指针(1)
- Spring事务系列