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表中相应的记录则没有删除。