




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hibernate配置文件详解2007-11-28 13:44:46| 分类: Hibernate |字号 订阅 Hibernate的基本配置文件有两种:hibernate.cfg.xml和.hbm.xml文件。前者包含了Hibernate与数据库的基本连接信息,在Hibernate工作的初始阶段,这些信息被先后加载到Configuration和SessionFactory实例;后者包含了Hibernate的基本映射信息,即系统中每一个类与其对应的数据库表之间的关联信息,在Hibernate工作的初始阶段,这些信息通过hibernate.cfg.xml的mapping节点被加载到Configuration和SessionFactory实例。这两种文件信息包含了Hibernate的所有运行期参数。下面我们用详细的例子来说明这两种文件的基本结构和内容。一、hibernate.cfg.xml文件: root jdbc:mysql:/localhost:3306/webases org.hibernate.dialect.MySQLDialect 274507 com.mysql.jdbc.Driver 二、.hbm.xml文件: 由于Hibernate的关联关系包含了一对一、一对多、多对一和多对多等四种类型,因此,也就有分别与之对应的四种.hbm.xml文件。下面我们就以比较常用的双向“一对多”型关联关系为例,介绍一下.hbm.xml文件的基本结构和内容。有关Hibernate更详细的内容,请参考相关文资料。 该例中有两张数据库表:一张为“省”表,另一张为“市”表,所用的数据库为MySQL。二者的建表语句如下: CREATE TABLE IF NOT EXISTS Province ( Guid INT NOT NULL AUTO_INCREMENT, Provincename VARCHAR(16) NOT NULL, PRIMARY KEY (Guid) ) TYPE=InnoDB; CREATE TABLE IF NOT EXISTS City ( Guid INT NOT NULL AUTO_INCREMENT, Cityname VARCHAR(32) NOT NULL, ProvinceID INT NOT NULL, PRIMARY KEY (Guid) ) TYPE=InnoDB; ALTER TABLE City ADD CONSTRAINT CityRFProvince FOREIGN KEY (ProvinceID) REFERENCES Province (Guid) ON DELETE CASCADE ON UPDATE RESTRICT; Province表为主控方,City表为被控方,两者之间存在双向的一对多的关系。表City通过外键ProvinceID与表Province进行关联:当表Province中有记录被删除时,表City中相关记录亦被删除;当表Province中有记录被保存或者更新时,表City中相关记录无任何变化。 将Hibernate自带工具Middlegen生成的Province.hbm.xml文件进行修改,内容如下: set name=cities lazy=true inverse=true cascade=delete one-to-many class=com.xxx.hibernate.City / 将Hibernate自带工具Middlegen生成的City.hbm.xml文件进行修改,内容如下: many-to-one name=province class=com.xxx.hibernate.Province cascade=none outer-join=auto not-null=true 多对多的双向关联关系(中间表)2007-06-06 17:26在多对多的关联关系中,可拆分为两个一对多的关联关系,即在两个表中间增加一个关联表,记录这两个表之间的关联关系。若抛开关联表,则原2个表之间看不出任何的关系。以为考试类别和考试科目为例,详细讲解在添加关联表的情况下两个表之间的hibernate设置。考试类别表:exam_sort_enumid:integername:string考试科目表:subjectid:integername:string考试类别科目关联表exam_sort_enum_id:integer 对应考试类别表的idsubject_id:integer 对应考试科目表的idExamSortEnum.hbm.xml ExamSortEnum.javapackage model;import java.io.Serializable;import java.util.HashSet;import java.util.Set;public class ExamSortEnum implements Serializableprivate static final long serialVersionUID = 1L;private Integer id;private String name;private Set subject = new HashSet();public ExamSortEnum()public ExamSortEnum(Integer id) setId(id);public void setSubject(Set subject) this.subject = subject;public Set getSubject() return this.subject;public Integer getId() return id;public void setId(Integer id) this.id = id;public String getName() return name;public void setName(String name) = name;关于映射文件:映射文件要设置set,name=subject 为ExamSortEnum.java文件中定义的Set对象,存储多个Subject类型的容器。table=EXAM_SORT_ENUM_SUBJECT 为对应的中间表的表名,由于两个业务表之间不能直接打交道,只能通过中间表来进行关联。lazy=true 延迟加载cascade=save-update 级联保存更新,若设置为all,delete,all-delete-orphans,则在删除一个ExamSortEnum对象时,关联的Subject对象也被删除,而此关联的subject对象可能被其他的为ExamSortEnum对象所引用。 指定中间表中参照为Exam_Sort_Enum表的外键为exam_sort_enum_idcolumn=subject_id Exam_Sort_Enum表参照Subject表的外键为subject_id,即Exam_Sort_Enum表通过subject_id与Subject表关联class=model.Subject 指定set中name=subject中存放的是model.Subject对象。Subject.hbm.xml Subject.javapackage model;import java.io.Serializable;import java.util.HashSet;import java.util.Set;public class Subject implements Serializableprivate static final long serialVersionUID = 1L;private Integer id;private String name;private Set examSortEnum = new HashSet();public Subject()public Subject(Integer id) setId(id); public void setExamSortEnum(Set examSortEnum) this.examSortEnum = examSortEnum;public Set getExamSortEnum() return this.examSortEnum;public Integer getId() return id;public void setId(Integer id) this.id = id;public String getName() return name;public void setName(String name) = name;关于映射文件:内容与ExamSortEnum.hbm.xml差不多,只是多了一个inverse=true,告诉hibernate控制权不在此处,两个映射文件只能设置一个。测试类:package model;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;public class ExamSortEnumTest public static SessionFactory sf ;static try Configuration cfg = new Configuration().configure(); sf = cfg.buildSessionFactory(); catch(Exception e) e.printStackTrace(); public void insert1() Session sess = sf.openSession(); Transaction tx = sess.beginTransaction(); Subject sa = new Subject(); sa.setName(A1); Subject sb = new Subject(); sb.setName(B1); Subject sc = new Subject(); sc.setName(C1); ExamSortEnum esea = new ExamSortEnum(); esea.setName(A); esea.getSubject().add(sa); esea.getSubject().add(sc); ExamSortEnum eseb = new ExamSortEnum(); eseb.setName(B); eseb.getSubject().add(sb); eseb.getSubject().add(sc); sess.save(esea); sess.save(eseb); tx
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环县公务接待管理办法
- 税费政策落实服务新质生产力
- 企业安全管理培训讲稿课件
- 出警现场安全意识培训课件
- 2025生殖实验室试题及答案
- 2025年一号文件题库及答案
- 出租车每月安全培训课件
- 导游基础模拟练习题+答案
- 2025年苏州市存量房买卖合同
- 2025商铺租赁合同律师拟定版本(律师拟定版本)
- 甲状腺手术甲状旁腺保护
- 2023年法律职业资格《主观题》真题及答案
- 施工项目部会议管理制度
- 2024-2025学年安徽省八年级语文上册第一次月考试卷04
- 欢迎一年级新生入学课件
- 译林版七年级上册英语阅读理解专项练习题100篇含答案
- 单位委托员工办理水表业务委托书
- 矿山生态修复监理工作资料编制内容和要求、施工监理主要工作程序框图、工程施工与监理表式
- 夫妻婚内财产协议书(2024版)
- 小菜园租赁合同范本
- DL-T1342-2014电气接地工程用材料及连接件
评论
0/150
提交评论