传智播客OA项目学习--阶段三(级联操作)

一、Hibernate 

    1、级联操作

        例子:

<set name="children" cascade="delete">
			<key column="parentId"></key>
			<one-to-many class="Department"></one-to-many>
		</set>

        这样在添加(cascade="delete"),在进行删除操作时,会对“children”进行相同的操作。

 cascade属性有四种取值:  
             all:所有操作都执行级联操作;
             none:所有操作都不执行级联操作;
             save-update:保存和更新时执行级联操作;
             delete:删除时执行级联操作;

2、

@Resource //Spring 注入,获取实例
private SessionFactory sessionFactory;

sessionFactory.getCurrentSession().createQuery(//
                                                "FROM Department d WHERE d.parent IS null"//面向对象查询
                                                ).list();
                                                
 1)返回单条记录:get()、load()方法
     区别:a、get()方法不采用延迟加载方式;load()方法采用延迟加载的方式
           b、使用get()方法查找不存在的记录时会报NullPoint异常;
              使用load()方法查找不存在的记录时会报ObjectNotFound异常
           疑问:为什么get()方法查找不存在的记录时会报空指针异常?
           回答:get()方法执行查询语句,当查找到不存在的记录时就返回空值,当调用对象属性的
                 get()方法时,由于属性值为空,因此才会报空指针异常
  2)返回多条记录:list()方法、iterator()方法
     区别:1)list()方法不采用延迟加载方式;iterator()方法采用延迟加载的方式
           2)list()方法在执行时有N条记录就执行N条SQL语句;
              iterator()方法在执行时会产生"N+1"问题:有N条记录,就会执行N+1条SQL语句。
           疑问:为什么iterator()方法在执行时会产生"N+1"问题?
           回答:iterator()方法在执行时,首先会查询满足条件的记录的主键列,然后通过主键列再去
                 执行N条SQL语句


转载于:https://my.oschina.net/lpe234/blog/270422

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值