hibernate第三天 一对多 , 多对多

本文解释了Hibernate中inverse属性的作用及其对数据库外键维护的影响,并对比了延迟加载与立即加载的区别,帮助开发者更好地理解Hibernate的加载机制。

1.1. 阐述你对inverse的理解

答:

1、inverse的默认值是false代表不放弃外键维护权配置值为true,代表放弃了外键的维护权

2、双方维护外键会多产生update语句,造成浪费资源,一般一对多的情况中一方放弃维护权,多对多情况任意一方放弃

3、Inverse 决定数据库中外键值是否存在

 

 

 

使用HQL时需要注意以下几点:

 

1.大小写敏感

 

因为HQL是面向对象的,而对象类的名称和属性都是大小写敏感的,所以HQL是大小写敏感的。

 

HQL语句:from Cat as cat where cat.id > 1;与from Cat as cat where cat.ID > 1;是不一样的,这点与SQL不同。

 

 

1. Hibernate中的延迟加载和立即加载?

答案:

延迟加载:                                                                                 1.降低了内存的开销,在用到某些数据的时候才会到数据中进行查询。                                  2.提高了程序运行性能。

注:如果session被关闭了,而你又想用到某些数据,这个时候使用延迟加载会出错;需要立即加载或者使用OpenSessionInView。

立即加载:                                                                                                 1.select语句的数目太多,需要频繁的访问数据库------会影响查询性能。

2.如在应用程序只需要访问DEPT对象,而不需要访问EMP对象的场合,加载EMP对象完全是多余的操作,这些EMP对象-----白白浪费了内存空间。

注:如果session被关闭了,而你想访问EMP对象,这个时候是不会出错的,因为对象都被加载到内存了。                                                                                              区别

 1) 查询时机,get 会立即加载并查询;

         load,用的时候才发起查询

 2) 返回值不同  get   返回查询的实体类对象;

           load 返回  实体类 代理的对象。

 

转载于:https://www.cnblogs.com/shan1393/p/9030178.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值