hibernate

Posted m97i

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate相关的知识,希望对你有一定的参考价值。


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的主要内容,如果未能解决你的问题,请参考以下文章

HibernateHibernate配置与sessiontransaction

hibernateHibernate SQL 方言(hibernate.dialect)

HibernateHibernate的多表查询

hibernateHibernate中get()和load()的区别

HibernateHibernate中使用延迟加载应该注意的事项

hibernateHibernate中save, saveOrUpdate, persist, merge, update 区别