||
前段时间一直在研究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
- 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;
- }
- }
- \"1.0\"?>
- PUBLIC \"-//Hibernate/Hibernate Mapping DTD//EN\"
- \"<a href="http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd//" target="_blank" "="">http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd\">
- <class name=\"one2many.Account\" table=\"Account\">
- \"aid\" type=\"long\" column=\"aid\" unsaved-value=\"0\">
- <generator class=\"increment\"/>
- \"accNumber\" type=\"string\"/>
- \"customer\" column=\"cidForCustomer\"/>
- class>
- \"1.0\"?>
- PUBLIC \"-//Hibernate/Hibernate Mapping DTD//EN\"
- \"<a href="http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd//" target="_blank" "="">http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd\">
- <class name=\"one2many.Customer\" table=\"Customer\">
- \"cid\" type=\"string\" column=\"cid\">
- <generator class=\"assigned\"/>
- \"custName\" type=\"string\"/>
- \"accounts\" lazy=\"true\" inverse=\"true\" cascade=\"all\" >
- \"cidForCustomer\"/>
- <one-to-many class=\"one2many/Account\"/>
- class>
- 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(acc);
- session.save(cust);
- tx.commit();
- session.close();
- sessionFactory.close();
- }
- }