hibernate开发及整合应用大全摘抄

来源:互联网 发布:布艺沙发品牌 知乎 编辑:程序博客网 时间:2024/04/30 06:31

get()方法通过主键id立即检索对象(不管此对象在配置文件 的class标签中设置的是立即还是延迟策略),当对象不存在时返回null

如果是延迟检索,load()方法不发送SQL语句到数据库,它简单地生成一个代理,此代理对象只拥有主键id,此对象的属性被使用时,它首先要在缓存中根据id查找对象,如果没有才到数据库中加载,如果拥有此id的记录在数据库中不存在,load()方法抛出例外,因此在使用load()方法时,要保证数据库中一定有相应的记录

设置cascade="delete",在删除根对象时将级联删除附属对象,设置cascade="delete-orphan",主要用于从集合中删除对象的情况,此时被删除的对象将会被删除,成为脱管对象, 一对多,一对一关系一般设置cascade="save-update";多对一,多对多关系一般设置cascade="none"; 

对象关联一对多,多对一通常应设置为双向关联,关在"一"这方设置inverse="true"(比如一个班级对应多个学生,在班级这一边设置inverse="ture",表示由另一方维持关系)

Criteria最适合动态条件查询,不太适合统计查询,QBE还不够强大,只适合简单的查询

HQL常用来进行实体检索,这时要注意返回的List中的元素是实体还是实体数组,如果用HQL进行属性查询,当查询两个以上的属性时,List中的元素一定是数组

QBC最大的用途在于动态查询,它不会忽略配置文件中的预先抓取策略

使用本地SQL检索必须检索对象的所有属性

实际中使用时,一对多和多对多关系推荐使用延迟加载,而一对一和多对一关系推荐使用预先加载.

预先加载由hibernate.max_fetch_depth来控制抓取深度

原创粉丝点击