📄 maptestbean.java
字号:
package com.hellking.study.hibernate;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
import java.util.*;
/**
*测试持久对象的映射关系
*/
public class MapTestBean extends HibernateBase
{
public MapTestBean() throws HibernateException
{
super();
}
/**
*在数据库中添加数据
*/
public void addData(String studentId,String classesId,String coursesId)
throws HibernateException {
try
{
/**
*以下的代码添加了一个Student,同时为Student指定了
*Address、Courses和Classses。
*/
beginTransaction();
//创建一个Student对象 。
Student student = new Student();
student.setName("hellking2");
student.setId(studentId);
//创建一个Address对象。
Address addr=new Address();
addr.setCity("beijing");
addr.setState("bj");
addr.setStreet("tsinghua");
addr.setZip("100083");
addr.setId(student.getId());
//设置Student和address的关系。
student.setAddress(addr);
Set set=new HashSet();
set.add(student);
//创建一个course对象。
Course course=new Course ();
course.setId(coursesId);
course.setName("computer_jsp");
//设置course和student对象之间的关系。
course.setStudents(set);
//创建一个classes对象。
Classes cl=new Classes();
cl.setId(classesId);
cl.setName("engine power");
//设置某个classes对象包含的的students对象。
cl.setStudents(set);
//由于是双向的关系,student对象也需要设置一次。
student.setClasses(cl);
//保存创建的对象到session中。
session.save(cl);
session.save(course);
session.save(student);
session.save(addr);
//提交事务,使更改生效。
endTransaction(true);
}
catch(HibernateException e)
{
System.out.println("在添加数据时出错!");
e.printStackTrace();
throw e;
}
}
/**
*获得某个给定studentid的Student的地址信息
*/
public Address getAddress(String id) throws HibernateException
{
beginTransaction();
Student st=(Student)session.load(Student.class,id);
Address addr=(Address)session.load(Address.class,st.getId());
endTransaction(false);
return addr;
}
/**
*获得某个给定studentid的Student的所有课程
*/
public Set getCourses(String id)throws HibernateException
{
beginTransaction();
Student st=(Student)session.load(Student.class,id);
endTransaction(false);
return st.getCourses();
}
/**
*测试获得某个给定studentid的Student所属的Classes
*/
public Classes getClasses(String id)throws HibernateException
{
beginTransaction();
Student st=(Student)session.load(Student.class,id);
System.out.println(st.getClasses().getId());
endTransaction(false);
return st.getClasses();
}
/**
*删除和某个学生相关的所有信息
*(这里只是测试,我们暂且不说这种操作的意义何在)。
*/
public void delteStudent(String id)throws HibernateException
{
beginTransaction();
Student st=(Student)session.load(Student.class,id);
Address addr=(Address)session.load(Address.class,st.getId());
//删除address信息。
session.delete(addr);
//删除classes信息。
session.delete(st.getClasses());
/**
*逐个删除course。
*/
for(Iterator it=st.getCourses().iterator();it.hasNext();)
{
Course c=(Course)it.next();
session.delete(c);
}
//最后,删除student对象。
session.delete(st);
endTransaction(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -