码迷,mamicode.com
首页 > Web开发 > 详细

hibernate

时间:2017-08-22 01:45:21      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:通过   delete   upd   左连接   bean   匹配   多对一   dem   dao层   


cascade:save-update,delete / all影响关联外键的表
inverse默认false 主表单向调整 会主动更新关联外键的数据   true需要双向赋值

order-by:列名 asc排序 也可以在javabean的映射文件中set标签添加属性

    
lazy类级默认为true延迟加载   设置为false表示立即加载
lazy一对多多对多 extra加强延迟加载 集合长度
lazy多对一默认为proxy 代理延迟加载
    no-proxy 无代理延迟加载
        设置为false表示立即加载
session关闭报错--->
Hibernate.initialize(对象) 初始化对象   有关联访问的需求


浏览器->服务器->web应用->Servlet->事务biz->dao->db数据库
db数据库->dao->biz->Servlet->jsp->服务器运行完后产生html->浏览器


多对多关联关系 inverse属性一个false一个true  大部分主表false分表true
项目表 pid pname
雇员表 eid ename
关系表 pid eid
项目表的映射文件
set集合 标签属性 name=集合 cascade (1)table="关系表"
    (2)key 字段=关系表项目外键
    many-to-many 类=雇员类 (3)字段=关系表雇员外键

雇员表的映射文件
set集合 标签属性 name=集合 (1)table="关系表"
    (2)key 字段=关系表雇员外键
    many-to-many 类=项目类 (3)字段=关系表项目外键





左连接 left join
from dept d left join d.emps e order by d.deptno
d.emps是部门javaBean里的雇员对象集合 通过映射这样写hql语句 找关联的集合
返回值List<Object[]> result  
数组里两个对象result[0],result[1]
object[]==> [部门,雇员]

迫切左连接 left join fetch
from dept d left join fetch d.emps e order by d.deptno
返回值List<Dept> dept
把查询到的雇员放进了dept对象的雇员集合里

左外连接是左表全 右表补
右外连接是左表补 右表全
内连接两表必须匹配

没有迫切右外连接
返回值左表为主的对象集合 不会出现集合对象为null后被右表赋值


hql=select e from Emp e join e.dept d where d.dname=?
hql=select e from Emp e,Dept d where d=e.dept and d.dname=?

hql=from Emp e where e.dept.dname=:dname //隐式内连接
hql=select e.empno,e.ename,e.dept.dname from Emp e where ... ;


命名查询
配置文件中
<query name="findEmpByJob">
   <![CDATA[
    from Emp e where e.job=:job
   ]]>
</query>
Dao层
getSession().getNamedQuery("findEmpByJob").setParameter("job",arg).list();






hibernate

标签:通过   delete   upd   左连接   bean   匹配   多对一   dem   dao层   

原文地址:http://www.cnblogs.com/m97i/p/7407407.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!