<%@ page contentType="text/html; charset=gb2312"%> 一个完整的hibernate的one-to-many的例子
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
一个完整的hibernate的one-to-many的例子
     发布者: 发布时间:2007-02-01
前段时间一直在研究hibernate的one-to-many,看了不少资料也在本论坛上求教过,但由于本人对Hibernate研究的时间不是很长,所以花了不少时间和精力.昨天终于弄出来了,现在与大家分享,希望对初学者有帮助!

1、设置数据库,本人使用的数据库是Oracle 9i
   设置hibernate.properties
   ## Oracle

   hibernate.dialect net.sf.hibernate.dialect.Oracle9Dialect
   #hibernate.dialect net.sf.hibernate.dialect.OracleDialect
   hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
   hibernate.connection.username sa
   hibernate.connection.password sa
   hibernate.connection.url jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:myoracle

2、假设一个用户可以同时有几个帐户,能通过帐户对应到用户,即为一个双向的one-to-many.这是引用我在论坛上发表的文章的回复,很谢谢geniouc给我的参考。

3、javaBean: customer & account
  
  1.   public class Customer {
  2.   private String cid;
  3.   private String custName;
  4.   private Set accounts= new HashSet();
  5.   public Customer(){
  6.   }
  7.   public String getCid() {
  8.     return cid;
  9.   }
  10.   public void setCid(String cid) {
  11.     this.cid = cid;
  12.   }
  13.   public String getCustName() {
  14.     return custName;
  15.   }
  16.   public void setCustName(String custName) {
  17.     this.custName = custName;
  18.   }
  19.   public Set getAccounts(){
  20.      return accounts;
  21.   }
  22.   public void setAccounts(Set accounts){
  23.      this.accounts = accounts;
  24.   }
  25. }
  26.   public class Account {
  27.   private long aid;
  28.   private String accNumber;
  29.   private Customer customer;
  30.   public Account(){
  31.   }
  32.   public long getAid() {
  33.     return aid;
  34.   }
  35.   public void setAid(long aid) {
  36.     this.aid = aid;
  37.   }
  38.   public String getAccNumber() {
  39.     return accNumber;
  40.   }
  41.   public void setAccNumber(String accNumber) {
  42.     this.accNumber = accNumber;
  43.   }
  44.   public Customer getCustomer(){
  45.      return customer;
  46.   }
  47.   public void setCustomer(Customer customer){
  48.      this.customer = customer;
  49.   }
  50. }


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

Customer.hbm.xml
  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping
  3.     PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
  5. <hibernate-mapping>
  6.     <class name="one2many.Customer" table="Customer">
  7.     <id name="cid" type="string" column="cid"
  8.             <generator class="assigned"/> 
  9.         </id>
  10.     <property name="custName" type="string"/>        
  11.      <set name="accounts" lazy="true" inverse="true" cascade="all" >
  12.      <key column="cidForCustomer"/>
  13.      <one-to-many class="one2many/Account"/>
  14.      </set>
  15.     </class
  16. </hibernate-mapping>

5、测试程序,Test.java

  1. package one2many;
  2. import net.sf.hibernate.*;
  3. import net.sf.hibernate.cfg.*;
  4. public class Test {
  5. public static void main(String[] args) throws HibernateException {
  6.      Configuration conf= new Configuration();
  7.      conf.addClass(Account.class);
  8.      conf.addClass(Customer.class);
  9.      SessionFactory sessionFactory = conf.buildSessionFactory();
  10.      Customer cust = new Customer();
  11.      cust.setCid("aa");
  12.      cust.setCustName("Kelvin");
  13.      Account acc = new Account();
  14.      acc.setAccNumber("acc");
  15.      acc.setCustomer(cust);
  16.      Account acc1 = new Account();
  17.      acc1.setAccNumber("acc1");
  18.      acc1.setCustomer(cust);
  19.      cust.getAccounts().add(acc);
  20.      cust.getAccounts().add(acc1);
  21.      Session session = sessionFactory.openSession();
  22.      Transaction tx= session.beginTransaction();
  23.      session.save(cust);
  24.      tx.commit();
  25.      session.close();
  26.      sessionFactory.close();
  27.  }
  28. }
(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
sqlserver2000与jdbc 的融合问题
JDBC简介
连接数据库的整理点滴
Oracle数据库的数据字典
一个简单实用的数据库操作框架
SQLServer2000 JDBC驱动的完整安装及测试说明
 
最近评论:
        
回复:一个完整的hibernate的one-to-many的例子
果然是基础
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号