Hibernate一对一实现 (二)

2014-11-24 11:33:09 · 作者: · 浏览: 8
card.setMember(m);

m.setCard(card);

session.save(m);
tx.commit();
}运行后可以在控制台看到如下信息

Hibernate: insert into member (age, name) values ( , )
Hibernate: insert into idcard (num, id) values ( , )


在上面的程序中只调用一次session.save()方法,就产生了两条SQL语句。

5.session.delete()方法删除Member中的一条记录


[java]
Session session = HibernateUtil.sessionFactory.openSession();
Transaction tx = session.beginTransaction();
//从数据表member中加载id为9的记录
Member m = (Member)session.load(com.mxl.onetoone.Member.class,9);
session.delete(m);
tx.commit();

Session session = HibernateUtil.sessionFactory.openSession();
Transaction tx = session.beginTransaction();
//从数据表member中加载id为9的记录
Member m = (Member)session.load(com.mxl.onetoone.Member.class,9);
session.delete(m);
tx.commit();
在控制台出现如下SQL信息

Hibernate: select member0_.id as id2_1_, member0_.age as age2_1_, member0_.name as name2_1_, idcard1_.id as id1_0_, idcard1_.num as num1_0_ from member member0_ left outer join idcard idcard1_ on member0_.id=idcard1_.id where member0_.id=
Hibernate: delete from idcard where id=
Hibernate: delete from member where id=
只调用了一次session.delete()方法,就删除了两个表中的记录。

如果把Member.hbm.xml文件中的cascade值改为none,再执行如上的程序控制台信息如下

Hibernate: select member0_.id as id2_1_, member0_.age as age2_1_, member0_.name as name2_1_, idcard1_.id as id1_0_, idcard1_.num as num1_0_ from member member0_ left outer join idcard idcard1_ on member0_.id=idcard1_.id where member0_.id=
Hibernate: delete from member where id=


则只执行了一条delete语句,只删除member表中的记录,而idcard表中相应的记录则没有删除。