hibernate关联保存(一对多)

本文详细解释了Hibernate关联保存的概念,通过一对多关系的实例代码演示了如何在Java中使用Hibernate进行对象关联的保存操作。文章强调了inverse和cascade属性的重要作用,并通过代码示例展示了它们的正确应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hibernate关联保存(一对多)
2011年06月01日
   弄了几天,终于做出Hibernate的第一个关联保存的例子出来了,还跑去广州购书中心看了一个下午的书,
  还是感谢网友的帮助,让我弄懂了inverse和cascade这两个属性的使用。
  package com.test.ORM;
  import java.util.Set;
  public class Student {
  private int sid ;
  private String sname ;
  private String sage ;
  private Set book;//用来接收、获取Book的对应一端中的
  public int getSid() {
  return sid;
  }
  public void setSid(int sid) {
  this.sid = sid;
  }
  public String getSname() {
  return sname;
  }
  public void setSname(String sname) {
  this.sname = sname;
  }
  public String getSage() {
  return sage;
  }
  public void setSage(String sage) {
  this.sage = sage;
  }
  public Set getBook() {
  return book;
  }
  public void setBook(Set book) {
  this.book = book;
  }
  }
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  //最重点的地方,inverse="false"表示双向关联,也就是关系由两端来控制.cascade="all"就是关联的级别,还有all就是说无论是一方所有的操作(sava、update、delete等)当然也有其他值的。另一方也跟这对应的改变。
  
  
  
  
  
  package com.test.ORM;
  public class Book {
  private int bid ;
  private String bname ;
  private String bprice ;
  private Student student;
  public Student getStudent() {
  return student;
  }
  public void setStudent(Student student) {
  this.student = student;
  }
  public int getBid() {
  return bid;
  }
  public void setBid(int bid) {
  this.bid = bid;
  }
  public String getBname() {
  return bname;
  }
  public void setBname(String bname) {
  this.bname = bname;
  }
  public String getBprice() {
  return bprice;
  }
  public void setBprice(String bprice) {
  this.bprice = bprice;
  }
  }
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  //用来介绍一方中的students,呵呵,对应Book类中的private Student student;
  
  
  
  
  package com.test;
  import java.util.HashSet;
  import java.util.Set;
  import org.hibernate.Session;
  import org.hibernate.SessionFactory;
  import org.hibernate.Transaction;
  import org.hibernate.cfg.Configuration;
  import com.test.ORM.Book;
  import com.test.ORM.Student;
  public class TestOneToMany {
  /**
  * @param 测试类
  */
  public static void main(String[] args)throws Exception {
  SessionFactory sf;
  Session session;
  Configuration config=new Configuration();
  config.configure();
  sf=config.buildSessionFactory();
  session=sf.openSession();
  Transaction ts=session.beginTransaction();
  //new 两个对象,只要保存student,book就会自动保存了
  Student student=new Student();
  student.setSname("student2");
  student.setSage("sage2");
  Book book=new Book();
  book.setBname("bname2");
  book.setBprice("bprice2");
  book.setStudent(student);
  Set bookSet=new HashSet();
  bookSet.add(book);
  student.setBook(bookSet);
  session.save(student);
  ts.commit();
  session.flush();
  session.close();
  }
  }
  要具体了解hibernate 还是去看下hibernate 的保存机制吧,包括OID,事务管理什么的
  错误解析:
  package com.test;
  import java.util.HashSet;
  import java.util.Set;
  import org.hibernate.Session;
  import org.hibernate.SessionFactory;
  import org.hibernate.Transaction;
  import org.hibernate.cfg.Configuration;
  import com.test.ORM.Book;
  import com.test.ORM.Student;
  public class TestOneToMany {
  /**
  * @param 测试类
  */
  public static void main(String[] args)throws Exception {
  SessionFactory sf;
  Session session;
  Configuration config=new Configuration();
  config.configure();
  sf=config.buildSessionFactory();
  session=sf.openSession();
  Transaction ts=session.beginTransaction();
  Student student=new Student();
  student.setSname("student3");
  student.setSage("sage3");
  Book book=new Book();
  Set bookSet=new HashSet();
  for(int i=0;i
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值