欢迎来到天天文库
浏览记录
ID:40555542
大小:163.00 KB
页数:12页
时间:2019-08-04
《Hibernate与spring的详细介绍与整合案例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、Hibernate1、Hibernate映射关系关联关系有两个分类:(1)单向关系:只需单向访问关联端。(2)双向关系:关联的两端可以互相访问。<1>、单向N-1关联(1)无连接表的N-1关联使用元素。元素常用属性:§name:该属性的名字§column:指定进行关联的外键列的列名§class:关联实体的全限定类名§cascade:指定哪些操作会从主表记录级联到子表记录(2)有连接表的N-1关联<2>、单向1-1关联从持久化类来看,单向1-1与单向N-1没有丝毫区别,配置也类似,在元素中增加unique=“
2、true”即可。(1基于外键的单向1-1两个实体各自有不同的主键,但其中有一个实体有一个外键引用了另一个实体的主键。增加unique=“true”(2)基于主键的单向1-1关联的两个实体共享一个主键值。基于主键关联的持久化类不能拥有自己的主键生成策略,它的主键由关联类负责生成。采用元素,并通过name属性指定关联实体属性的属性名。<3>、单向1-N关联单向1-N关联的持久化类里需要使用集合属性,映射文件中使用元素,并通过class属性指定关联实体的类型。对于单向1-N关联,需要在1的一端增加Set属性的set和get方法。注意:(1)必须
3、指定cascade=“all”.(2)尽量少用单向1-N关联,而是使用双向1-N关联。<4>、单向N-N关联单向N-N关联和1-N关联的持久化类代码完全相同,控制关系的一端需要增加一个Set集合属性,被关联的持久化实例以集合形式存在。N-N关联与有连接表的1-N关联相似,只要去掉元素的unique=“true”即可。元素的class属性指定关联实体的类名。<5>、双向1-N关联对于1-N关联,Hibernate推荐使用双向关联,而且不要让1的一端控制关联关系,而使用N的一端控制关联关系。两端都需要增加对类关联属性的访问,N的一端增加
4、引用到关联实体的属性,1的一端增加集合属性,并使用映射关联属性。注意:inverse=“true”用于指定N的一端不控制关联关系。<6>、双向N-N关联双向N-N只能使用连接表来建立两个实体之间的关联关系。两端都使用Set集合来增加对集合属性的访问。增加元素来映射关联实体类。<7>、双向1-1关联需要修改两边的持久化类,让两个持久化类都增加引用关联实体的属性。(1)基于外键的双向1-1关联外键可以存放在任意一边,需要存放外键的一端需要增加元素并设置unique=“true
5、”。另一端需要使用,并使用name属性指定关联属性名。(2)基于主键的双向1-1关联其中一端的主键生成器使用foreign策略。2、HQL:(HibernateQueryLanguage)Hibernate查询语言Queryquery=session.createQuery("fromPersonaspwherep.name=?");query.setString(0,"1");Listlist=query.list();for(inti=0;i6、ntln(p.getId());System.out.println(p.getAge());}from子句:from关键字后紧跟持久化类的类名。例如:fromPersonasp或fromPersonpselect子句:(1)查询单个属性。select子句用于确定选择出的属性,当然select选择的属性必须是from后持久化类包含的属性。例如:selectp.namefromPersonasp(2)查询多个属性。查询语句可以返回多个对象和(或)属性,存放在Object[]队列中。例如:selectp.name,p.addressfromPersonaspeg:Queryquery=ses7、sion.createQuery("selectp.name,p.agefromPersonasp");Listlist=query.list();for(inti=0;i
6、ntln(p.getId());System.out.println(p.getAge());}from子句:from关键字后紧跟持久化类的类名。例如:fromPersonasp或fromPersonpselect子句:(1)查询单个属性。select子句用于确定选择出的属性,当然select选择的属性必须是from后持久化类包含的属性。例如:selectp.namefromPersonasp(2)查询多个属性。查询语句可以返回多个对象和(或)属性,存放在Object[]队列中。例如:selectp.name,p.addressfromPersonaspeg:Queryquery=ses
7、sion.createQuery("selectp.name,p.agefromPersonasp");Listlist=query.list();for(inti=0;i
此文档下载收益归作者所有