CUDR_Fetch 和 Cascade
1.Fetch的作用:在联接查询中,它是一次性的将两张表的作为一张表,全部
加载;fetch用于查找同步,cascade用于增删改同步
fetch 和 lazy 主要是用来级联查询的(load get), 而 cascade 和 inverse 主要是用来级 联插入和修改的 .
2.例子:
group类
@OneToMany(mappedBy="group",cascade={CascadeType.ALL},fetch=FetchType.LAZY) //OneToMany 默认fetch为LAZY 当查询小组时,不会从user表里查询出该小组的所有组员,当group.getUsers().get(0).getName()此时ORM框架会向数据库发出查询语句
public Set<User> getUsers() {return users;}
user类
@ManyToOne(cascade={CascadeType.ALL},fetch=FetchType.EAGER) //ManyToOne 默认Fetch为EAGER 当查询的时候会把该user所在的小组也查询出来
public Group getGroup() { return group;}
CRUD即create(创建)、Read/Retrieve(读取)、Update(更新)和Delete(删除)
Cascade用于设置CUD
Cascade.all在所有情况下级联。
Cascade.MERGE合并 save update
Cascade.PERSIST保存
Cascade.REFRESH刷新
Cascade.REMOVE删除
Fetch用于设置R
Fetch.EAGER主动的积极
Fetch.LAZY懒
3.cascade不管读,fetch管读 ,fetch:lazy和eager,只是取得早晚问题,用到的时候一定能取得
在一对多双向关联时
读少的一方时,里面存的多的不会自动加载,lazy
读多的一方时,里面存的少的会自动加载,因为它少eager
4.重要结论
要想关联,得设置好对象的关联
从多端user保存,先手工保存dept,否则抛TransientObjectException异常。
除非设置cascade属性
从一端保存,除非设定mappedBy并且设定CascadeType.ALL并且从两端
正确设定关联关系,否则不会自动级联保存User
双向关系需加入mappedBy
Cascade有5种:
ALL、MERGE、PERSIST、REFRESH、REMOVE
Cascade并非不用不可。
Cascade不影响
读取,只影响
对象的持久化(添加,删除,修改)
Fetch有2种:
EAGER LAZY,
多端默认是
EAGER,一端默认是
LAZY
Fetch影响读取
Session关闭,lazy就不好使了
EJB3为延迟加载和获取模式提供了fetch选项,而Hibernate 这方面提供了更丰
富的选项集.为了更好的调整延迟加载和获取策略,Hibernate引入了 一些附加
的注解:
@LazyToOne:
@LazyCollection:
@Fetch:
JPA的Fetch,既管延迟加载的事情,又管抓取策略的事情。
延迟加载:sql语句尽量晚发出
抓取策略:靠什么样的sql,找到关联的对方
分享到:
相关推荐
在mysql数据库连接时碰到Warning: mysql_fetch_array() expects …错误提示,根据我的经验这个是sql返回的query为空了,我们没有加己判断直接使用了. mysql_fetch_array()函数导致的,下面我们一起来看问题解决方案,我...
您可能感兴趣的文章:Lesson03_01 什么是CSS和CSS的设置方式Assoc显示或修改文件名扩展关联推荐学习php sesson的朋友必看PHP会话(Session)使用入门mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别js压缩...
由晶体管软件,颤振背景地理定位的创造者
复制代码 代码如下:<?... mysql_select_db(‘abc’,$link); $sql = “select * from book”; $result = mysql_query($sql); while($row = mysql_fetch_row($result)) { ... while($row = mysql_fetch_array($result)) {
$row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值 对的形式,我们可以这样读取数据,(假如数据库的字段是 username,passwd): $row[‘username’], $row[‘passwd’]...
while($row=mssql_fetch_row($query)) { echo $row[‘UserId’].’::’.$row[1].' ’; } 返回: Notice: Undefined index: UserId in D:/_PHP_Test/Test2/test_connLocalDB.php on line 32 ::王小一 Notic
mysql_fetch_* 列函数 mysql_fetch_* 列函数的主要功能是从查询返回的结果集中取得相关的查询结果,主要包括: mysql_fetch_array():从结果集中取得一行作为关联数组或索引数组,或二者兼有 mysql_fetch_row():...
Fetch error error fetch fetch
但与mysql_fetch_row()和mysql_fetch_array()不同的是,它返回的是一个对象,这个对象的属性集合即为数据的属性集合,而属性上的值则为数据库中当前行该属性上的值。函数定义如下。复制代码 代码如下:object mysql_...
颤动background_fetch 通过 , 创建者Background Fetch是一个非常简单的插件,它将每隔15分钟在后台唤醒一个应用程序,从而提供较短的后台运行时间。 每当发生后台获取事件时,此插件就会执行您提供的callbackFn 。 ...
这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能$row[0],$row[1],这样以数组下标来读取数据,而mysql_fetch_array()返回的数组既包含第一种,也包含键值对的形式,我们可以这样...
同mysql_fetch_row()类似,函数mysql_fetch_array()也是获取结果集中当前行数据,并在调用后自动滑向下一行。其定义如下。复制代码 代码如下:array mysql_fetch_array(int result, int [result_type])参数说明如下。...
4.8 mysqli_fetch_assoc记录集获取.pdf
4.9 mysqli_fetch_array记录集获取.pptx
本篇文章是对fetchAll()与mysql_fetch_array()的区别进行了详细的分析介绍,需要的朋友参考下
资源来自pypi官网。 资源全名:py_common_fetch-0.188.tar.gz
有时候在读取数据库之后,针对同一结果集,在同一个页面上输出的时候可能会碰到多次输出,也就是多次执行mysql_fetch_array(),在第二次执行的时候,如果不加处理,就不会输出任何内容,这种情况下只需要对循环指针...