一个完整的hibernate的one-to-many的例子

假设一个用户可以同时有几个帐户,能通过帐户对应到用户,即为一个双向的one-to-many.

1、javaBean: customer & account

public class Customer {
private String cid;
private String custName;
private Set accounts= new HashSet();
public Customer(){
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public Set getAccounts(){
return accounts;
}
public void setAccounts(Set accounts){
this.accounts = accounts;
}
}
public class Account {
private long aid;
private String accNumber;
private Customer customer;
public Account(){
}
public long getAid() {
return aid;
}
public void setAid(long aid) {
this.aid = aid;
}
public String getAccNumber() {
return accNumber;
}
public void setAccNumber(String accNumber) {
this.accNumber = accNumber;
}
public Customer getCustomer(){
return customer;
}
public void setCustomer(Customer customer){
this.customer = customer;
}
}


2、xml配置文件中:(关系的建立)
Account.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="one2many.Account" table="Account">
<id name="aid" type="long" column="aid" unsaved-value="0">
<generator class="increment"/>
</id>
<property name="accNumber" type="string"/>
<many-to-one name="customer" column="cidForCustomer"/>
</class>
</hibernate-mapping>

Customer.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="one2many.Customer" table="Customer">
<id name="cid" type="string" column="cid">
<generator class="assigned"/>
</id>
<property name="custName" type="string"/>
<set name="accounts" lazy="true" inverse="true" cascade="all" >
<key column="cidForCustomer"/>
<one-to-many class="one2many/Account"/>
</set>
</class>
</hibernate-mapping>

3、测试程序,Test.java

package one2many;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
public class Test {
public static void main(String[] args) throws HibernateException {
Configuration conf= new Configuration();
conf.addClass(Account.class);
conf.addClass(Customer.class);
SessionFactory sessionFactory = conf.buildSessionFactory();
Customer cust = new Customer();
cust.setCid("aa");
cust.setCustName("Kelvin");
Account acc = new Account();
acc.setAccNumber("acc");
acc.setCustomer(cust);
Account acc1 = new Account();
acc1.setAccNumber("acc1");
acc1.setCustomer(cust);
cust.getAccounts().add(acc);
cust.getAccounts().add(acc1);
Session session = sessionFactory.openSession();
Transaction tx= session.beginTransaction();
session.save(cust);
tx.commit();
session.close();
sessionFactory.close();
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值