Hibernate學(xué)習(xí)(五)---【一對(duì)多單項(xiàng)】
Classes和Student一對(duì)多。要站在classes這段來看。classes.java
package com.zzn.hibernate.oneToMany;
import java.util.Set;
public class Classes {
private int id;
private String name;
private Set students;
public Set getStudents() {
return students;
}
public void setStudents(Set students) {
this.students = students;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import java.util.Set;
public class Classes {
private int id;
private String name;
private Set students;
public Set getStudents() {
return students;
}
public void setStudents(Set students) {
this.students = students;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Student.java




















Class.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.zzn.hibernate.oneToMany">
<class name="Classes" table="CLASSES">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="name" />
<!--cascade="all"才能操作classes時(shí)級(jí)聯(lián)操作student -->
<set name="students" cascade="all">
<!-- key 這里不能是not-null="true" -->
<key column="classesid"/>
<one-to-many class="Student"/>
</set>
</class>
</hibernate-mapping>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.zzn.hibernate.oneToMany">
<class name="Classes" table="CLASSES">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="name" />
<!--cascade="all"才能操作classes時(shí)級(jí)聯(lián)操作student -->
<set name="students" cascade="all">
<!-- key 這里不能是not-null="true" -->
<key column="classesid"/>
<one-to-many class="Student"/>
</set>
</class>
</hibernate-mapping>
Student.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.zzn.hibernate.oneToMany.Student" table="STUDENT">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="name" />
</class>
</hibernate-mapping>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.zzn.hibernate.oneToMany.Student" table="STUDENT">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="name" />
</class>
</hibernate-mapping>
test.java
package com.zzn.hibernate;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import junit.framework.TestCase;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.zzn.hibernate.hibernateUtil.HibernateUtils;
import com.zzn.hibernate.oneToMany.Classes;
import com.zzn.hibernate.oneToMany.Student;
public class OneToManyTest extends TestCase {
@SuppressWarnings("unchecked")
public void OneToManySave() {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
Student student1 = new Student();
student1.setName("劉德華");
Student student2 = new Student();
student2.setName("周杰倫");
Set students = new HashSet();
students.add(student1);
students.add(student2);
Classes classes = new Classes();
classes.setName("中國");
classes.setStudents(students);
session.save(classes);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
if (session.isOpen()) {
tx.commit();
session.close();
}
}
}
}
@SuppressWarnings("unchecked")
public void OneToManyLoad() {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
Classes classes = (Classes)session.load(Classes.class, 1);
Set students = classes.getStudents();
for (Iterator iter=students.iterator(); iter.hasNext();){
Student student = (Student)iter.next();
System.out.println("student.name="+student.getName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
if (session.isOpen()) {
tx.commit();
session.close();
}
}
}
}
}
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import junit.framework.TestCase;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.zzn.hibernate.hibernateUtil.HibernateUtils;
import com.zzn.hibernate.oneToMany.Classes;
import com.zzn.hibernate.oneToMany.Student;
public class OneToManyTest extends TestCase {
@SuppressWarnings("unchecked")
public void OneToManySave() {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
Student student1 = new Student();
student1.setName("劉德華");
Student student2 = new Student();
student2.setName("周杰倫");
Set students = new HashSet();
students.add(student1);
students.add(student2);
Classes classes = new Classes();
classes.setName("中國");
classes.setStudents(students);
session.save(classes);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
if (session.isOpen()) {
tx.commit();
session.close();
}
}
}
}
@SuppressWarnings("unchecked")
public void OneToManyLoad() {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
Classes classes = (Classes)session.load(Classes.class, 1);
Set students = classes.getStudents();
for (Iterator iter=students.iterator(); iter.hasNext();){
Student student = (Student)iter.next();
System.out.println("student.name="+student.getName());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
if (session.isOpen()) {
tx.commit();
session.close();
}
}
}
}
}
posted on 2009-11-01 16:01 生命的綻放 閱讀(466) 評(píng)論(0) 編輯 收藏 所屬分類: Hibernate