java映射关系有几种,多対一关联映射

public static void main(String[] args) {

Session session = HibernateUtils.getSession();

Transaction t = session.beginTransaction();

try {

/**

* 测试插入数据

*/

/*         Group group = new Group();//情况1.生成一个新的组 g.setName("开发组");

group.setName("研发组");

User user1=new User();

user1.setName("奇隆");

user1.setGroup(group);

User user2=new User();

user2.setName("有朋");

user2.setGroup(group);

//这里也要保证在save(user)前,它所关联的group要先save或者在User的映射文件中配置上cascade级联save,.

session.save(user1);

session.save(user2);*/

/*        Group group=(Group)session.get(Group.class, 2);//情况2.加载数据库中已经存在的组

User user=new User();

user.setName("谢霆锋");

user.setGroup(group);

//由于加载的group 已经是持久化的了,所以这样也能保存成功.

session.save(user);*/

/**

* 小结:保存user之前要保证它所引用对象已经是持久化的,这样在保存user时,hibernate会自动把user的外键指向group的id

*/

User user = (User) session.get(User.class, 3);// 只是加载了user对象和它所在组的对象group的id属性,并没有加载group对象

System.out.println(user);

System.out.println(user.getGroup());

/**

* 小结:可见,在"多"的一端(user)可以加载"一"的一端(group).当然,这里存在延迟加载策略,有时间专门讨论.

*/

session.save(user);//由于user已经是持久化的对象,并且没有做出修改,所以这里并不触发任何的sql操作

user.setName("郑伊健");

session.save(user);//由于user已经做了改动,所以这里会触发update操作.

t.commit();

} catch (HibernateException e) {

e.printStackTrace();

t.rollback();

} finally {

HibernateUtils.closeSession(session);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值