hibernate中关于一对多的配置

我的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();
	}
运行后自动生成表和约束,啦啦啦~


猜你喜欢

转载自blog.csdn.net/dimples_qian/article/details/80848764