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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值