问题:一个老师有多个家庭地址,如何存储该老师的信息?
1.Address类:
package cn.siggy.pojo; public class Address { private String addr1; private String addr2; private String addr3; public String getAddr1() { return addr1; } public void setAddr1(String addr1) { this.addr1 = addr1; } public String getAddr2() { return addr2; } public void setAddr2(String addr2) { this.addr2 = addr2; } public String getAddr3() { return addr3; } public void setAddr3(String addr3) { this.addr3 = addr3; } }
2.Teacher类:
package cn.siggy.pojo; public class Teacher { private int id; private String name; private String sex; private Address address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } }
3.Teacher.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.siggy.pojo"> <class name="Teacher"> <id name="id"> <generator class="native"></generator> </id> <property name="name"/> <property name="sex"/> <!-- 组件 --> <component name="address" class="Address"> <property name="addr1"/> <property name="addr2"/> <property name="addr3"/> </component> </class> </hibernate-mapping>
4.测试代码:
package cn.siggy.test; import java.sql.SQLException; import javax.sql.rowset.serial.SerialException; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.junit.Test; import cn.siggy.pojo.Address; import cn.siggy.pojo.Teacher; import cn.siggy.util.HibernateUtil; public class HibernateTest { @Test public void testCreateDB(){ Configuration cfg = new Configuration().configure(); SchemaExport se = new SchemaExport(cfg); //第一个参数 是否生成ddl脚本 第二个参数 是否执行到数据库中 se.create(true, true); } @Test public void testSave() throws HibernateException, SerialException, SQLException{ Session session = null; Transaction tx = null; try{ session = HibernateUtil.getSession(); tx = session.beginTransaction(); Teacher t = new Teacher(); t.setName("老裴"); t.setSex("男"); Address address = new Address(); address.setAddr1("西三旗"); address.setAddr2("西直门"); address.setAddr3("南六环"); t.setAddress(address); session.save(t); tx.commit(); }catch (HibernateException e) { if(tx!=null) tx.rollback(); e.printStackTrace(); throw e; }finally{ HibernateUtil.closeSession(); } } }
5.测试结果:
控制台信息:
数据库表信息:
时间: 2024-10-01 05:19:40