1、4.持有类对象的修改。重新生成get,set方法。5.ORM映射文件修改Login.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 Lo
2、gin(); login.setUsername(lupe2); login.setPassword(123 detail.setTruename(卢鹏 detail.setEmail(yanhong /相互设置关联 login.setDetail(detail); detail.setLogin(login); /这样完成后就可以通过Session对象调用session.save(detail)来持久化该对象 session.save(detail); mit(); HibernateSessionFactory.closeSession(); 7.运行测试结果:2. 一对一关联关系,唯一外
3、键方式(多对一的一种特殊情况)1.在项目Hibernate_mapping的org.model包下编写生成数据库表对应的Java类对象和映射文件。2.Person.hbm.xml文件修改: !DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/ENhibernate-mapping /idproperty name=namejava.lang.Stringmany-to-one name=room / 属性名称room_id / 充当外键的字段名 class=org.model.Room / 被关联的类的
4、名称 cascade=all / 主控类所有操作,对关联类也执行同样操作 unique=true / 唯一性约束,实现一对一/class/hibernate-mappingRoom.hbm.xml:3.编写测试代码。在src文件夹下的包test的Test类中加入如下代码3. 多对一单向关联【修改多(主控)的这边】 只要把上例中的一对一的唯一外键关联实例稍微修改就可以变成多对一。【修改多(主控)的这边】步骤如下: 在项目Hibernate_mapping的org.model包下编写生成数据库表对应的Java类对象和映射文件。其对应表不变,Person表对应的类也不变,对应的Person.hbm.
5、xml文件修改如下: column= class= cascade= / 主控类所有操作,对关联类也执行同样操作而Room表不变,对应的POJO类如下:2.运行测试,发现在room类在完全没有操作数据库的情况下,程序就完成了对数据的插入总结:多对一关联,在反向生成实体类和映射文件后,只需修改多(主控)的这一方实体类和映射文件就可进行数据的操作。4.一对多双向关联如上面在多对一关联的基础上。修改一的这方数据(room的实体类和映射文件)修改room的实体类文件修改room的映射文件invers表示关联关系的维护工作由谁来负责,默认false,表示由主控方负责;true表示由被控方负责。由于该例是
6、双向操作,故需要设为false,也可不写。编写测试代码Person person1=new Person();Person person2=new Person();Room room=new Room();room.setAddress(NJ-S1-328person1.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