Hibernate一对一实现 (一)

2014-11-24 11:33:09 · 作者: · 浏览: 9

1.新建两个POJO类

Member.java


[java]
package com.mxl.onetoone;

public class Member {
private int id;
private String name;
private int age;
private IdCard card;
//省去setter,getter
}

package com.mxl.onetoone;

public class Member {
private int id;
private String name;
private int age;
private IdCard card;
//省去setter,getter
}
IdCard.java


[java]
package com.mxl.onetoone;

public class IdCard {
private int id;
private String num;
private Member member;
//省去setter,getter
}

package com.mxl.onetoone;

public class IdCard {
private int id;
private String num;
private Member member;
//省去setter,getter
}2.在src下新建hibernate的主配置文件,名为hibernate.cfg.xml


[html]
< xml version="1.0" encoding="UTF-8" >
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">



com.mysql.jdbc.Driver

jdbc:mysql:///test

root

123456


true

1
org.hibernate.dialect.MySQLDialect



< xml version="1.0" encoding="UTF-8" >
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">



com.mysql.jdbc.Driver

jdbc:mysql:///test

root

123456


true

1
org.hibernate.dialect.MySQLDialect



3.新建一个名为Member.hbm.xml的xml的文件


[html]
xml version="1.0" encoding="UTF-8" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">










< xml version="1.0" encoding="UTF-8" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">










IdCard.hbm.xml的xml文件


[html]
< xml version="1.0" encoding="UTF-8" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">





member





< xml version="1.0" encoding="UTF-8" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">





member






在Member.hbm.xml文件中


[html]

name:是类名称,table:是与Member类相对应的数据表


[html]

name:是Member类中的的属性。column是表中的字段名,该项可省略,如果省略则该值与name的值相同


[html]

建立一对一的关联。class:与Member类进行关联的类名,cascade级联关系,值为all。对Memberd类的对象进行修改(删除)时,同时修改(删除)IdCard类对象。


[html]



member




member

表示采用member产生的主键ID值作为该字段的值。
4.编写一个测试新增记录的类


[java]
public static void main(String []args){
Session session = HibernateUtil.sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Member m = new Member();
m.setAge(34);
m.setName("TT");

IdCard card = new IdCard();

card.setNum("628443201");
card.setMember(m);

m.setCard(card);

session.save(m);
tx.commit();
}

public static void main(String []args){
Session session = HibernateUtil.sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Member m = new Member();
m.setAge(34);
m.setName("TT");

IdCard card = new IdCard();

card.setNum("628443201");