前段时间一直在研究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
4、xml配置文件中:(关系的建立)
Account.hbm.xml
Customer.hbm.xml
5、测试程序,Test.java
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
- 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;
- }
- }
4、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>
5、测试程序,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();
- }
-
}