1、7hibernate级联关系Hibernate关联一对一关联1. 一对一关联关系,共享主键方式需要在“多”的一方(主动方)的持久化类中声明一个“一”方(被动方)类型的属性。操作步骤:登录表和详细信息表属于典型的一对一关联关系,可按共享主键方式进行。步骤如下: 创建Java项目,命名为“Hibernate_mapping”。 添加Hibernate开发能力,步骤同4.2.1节第4步。HibernateSessionFactory类同样位于org.util包下。 编写生成数据库表对应的Java类对象和映射文件。反向生成4.持有类对象的修改。重新生成get,set方法。5.ORM映射文件修改Logi
2、n.hbm.xmlDetail.hbm.xml6.新建Test.java public static void main(String args) / TODO Auto-generated method stub Session session=HibernateSessionFactory.getSession(); Transaction ts=session.beginTransaction(); / 创建事务对象 Detail detail=new Detail(); Login login=new Login(); login.setUsername(lupe2); login.s
3、etPassword(123); detail.setTruename(卢鹏); detail.setEmail(yanhong); /相互设置关联 login.setDetail(detail); detail.setLogin(login); /这样完成后就可以通过Session对象调用session.save(detail)来持久化该对象 session.save(detail); mit(); HibernateSessionFactory.closeSession(); 7.运行测试结果:2. 一对一关联关系,唯一外键方式(多对一的一种特殊情况)步骤如下:1.在项目Hibernate
4、_mapping的org.model包下编写生成数据库表对应的Java类对象和映射文件。重新生成get,set方法。2.Person.hbm.xml文件修改: !DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN / 唯一性约束,实现一对一 Room.hbm.xml:3.编写测试代码。在src文件夹下的包test的Test类中加入如下代码3. 多对一单向关联【修改多(主控)的这边】 只要把上例中的一对一的唯一外键关联实例稍微修改就可以变成多对一。【修改多(主控)的这边】步骤如下: 在项目Hibern
5、ate_mapping的org.model包下编写生成数据库表对应的Java类对象和映射文件。其对应表不变,Person表对应的类也不变,对应的Person.hbm.xml文件修改如下: !DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN / 主控类所有操作,对关联类也执行同样操作 而Room表不变,对应的POJO类如下:2.运行测试,发现在room类在完全没有操作数据库的情况下,程序就完成了对数据的插入总结:多对一关联,在反向生成实体类和映射文件后,只需修改多(主控)的这一方实体类和映射文件就可
6、进行数据的操作。4.一对多双向关联如上面在多对一关联的基础上。修改一的这方数据(room的实体类和映射文件)修改room的实体类文件修改room的映射文件invers表示关联关系的维护工作由谁来负责,默认false,表示由主控方负责;true表示由被控方负责。由于该例是双向操作,故需要设为false,也可不写。编写测试代码Person person1=new Person(); Person person2=new Person();Room room=new Room();room.setAddress(NJ-S1-328);person1.setName(李方方);person2.setName(王艳);person1.setRoom(room);person2.setRoom(room);/这样完成后就可以通过Session对象/调用session.save(person1)和session.save(person)/会自动保存roomsession.save(person1);session.save(person2);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1