我的user表是主表,dog表是从表
直接上示例代码:
User类:
private int id;
private String username;
private String password;
private Set<Dog> dogs = new HashSet<Dog>(0);//这里值的注意的,new 出来是怕后面用的时候dogs为null报错,但如果直接写new HashSet<Dog>(),会分配默认的长度给dogs,很占内存,所以用了个小技巧,初始化时把长度设置为0.
User.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 导入dtd文件 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.dimples.dao">
<class name="User" table="user">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="username" column="username"></property>
<property name="password" column="password"></property>
<set name="dogs" table="dog">
<key column="dogmaster"></key>
<one-to-many class="Dog"/>
</set>
</class>
</hibernate-mapping>
Dog类:
private int dogid;
private String dogname;
private String dogcolor;
private int dogage ;
private User dogmaster;
Dog.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 导入dtd文件 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.dimples.dao">
<class name="Dog" table="dog">
<id name="dogid" column="dogid">
<generator class="native"></generator>
</id>
<property name="dogname" column="dogname"></property>
<property name="dogcolor" column="dogcolor"></property>
<property name="dogage" column="dogage"></property>
<many-to-one name="dogmaster" column="dogmaster" class="User"></many-to-one>
</class>
</hibernate-mapping>
测试类:
@org.junit.Test
public void test() {
SessionFactoryUtils.getSessionFactory().getCurrentSession();
}
运行后自动生成表和约束,啦啦啦~