《hibernate一对一关系.doc》由会员分享,可在线阅读,更多相关《hibernate一对一关系.doc(3页珍藏版)》请在金锄头文库上搜索。
1、Hibernate处理一对一双向关联关系,相关练习是框架上课内容hibernatelession41. 准备工作,加入hibernate 框架支持,配置hibernate,也可以再配置好c3p0数据库连接池,加入junit支持,配置外挂二级缓存等等。2.User 此表只是问题说明,不是数据库中的数据表,字段名也不一致Idname1张一2张二CardIdcode11301231981929383834213012319819293838353.建立User的实体类public class User int userId;String userName;Card card;/省略所有get set
2、 方法。4.建立Card的实体类public class Card int cardId;String cardCode;User user;/特殊字段。/省略所有get set 方法。5.User.hbm.xml映射文件的配置6. Card.hbm.xml映射文件的配置/说明,由于两表是一对一关系,可以选用任一表作为主表,另一个表作为引用的外健。这里我们假设Card 表中的id是引用的User表中的id.也说是User表是主表。user7. hibernate.hbm.xml中:8.测试(1)增加数据com.pojo.User user = new com.pojo.User();user.
3、setUserName(zhangsan);com.pojo.Card card = new com.pojo.Card();card.setCardCode(1300000000);/session.save();card.setUser(user); /在上面,将User作为了主表,从表Card的数据来源于主表User(2)查询数据com.pojo.User user = (com.pojo.User) session.get(com.pojo.User.class, 1);System.out.println(user.getCard().getCardCode();或:Card car
4、d=session.get(com.pojo.Card.class,1);System.out.println(card.getUser().getUserName();(3)删除数据User user = (User) session.get(com.pojo.User.class, 1);session.delete(user);结果:将会提示无法执行。因为照上面的配置,User是主表,card表中的数据对它有依赖。9. 删除数据Card card=(Card)session.get(Card.class,1);session.delete(card);结果:正确执行。数据成功被删除。10.将user.hbm.xml中修改测试:User user = (User) session.get(com.pojo.User.class, 1);session.delete(user);结果User和Card中的数据被级联删除。