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
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