1. 数据库schema
teachers表:
create table teachers
(
id number(10) not null,
teachername varchar2(15)
)
alter table teachers
add constraint dere primary key (id)
students表:
create table students
(
id number(10) not null,
studentname varchar2(15),
teacher_id number(10)
)
alter table students
add constraint rere primary key (id)
alter table students
add constraint fff foreign key (teacher_id)
references teachers (id);
2. teacher.java和student.java
teacher.java
package mypack;
public class teacher {
//教师id
private long id;
//教师名称
private string teachername;
/**
* 缺省构造函数
*/
public teacher() {
}
/**
* 得到教师id
* @return long 教师id
*/
public long getid() {
return id;
}
/**
* 设置教师id
* @param id long 教师id
*/
public void setid(long id) {
this.id = id;
}
/**
* 得到教师名称
* @return string 教师名称
*/
public string getteachername() {
return teachername;
}
/**
* 设置教师名称
* @param teachername string 教师名称
*/
public void setteachername(string teachername) {
this.teachername = teachername;
}
/**
* 构造函数
* @param teachername string
*/
public teacher(string teachername) {
this.teachername = teachername;
}
}
student.java
package mypack;
public class student {
//学生id
private long id;
//学生名称
private string studentname;
//教师类
private teacher teacher;
/**
* 缺省构造函数
*/
public student() {
}
/**
* 得到学生id
* @return long 学生id
*/
public long getid() {
return id;
}
/**
* 设置学生id
* @param id long 学生id
*/
public void setid(long id) {
this.id = id;
}
/**
* 得到学生名称
* @return string 学生名称
*/
public string getstudentname() {
return studentname;
}
/**
* 设置学生名称
* @param studentname string 学生名称
*/
public void setstudentname(string studentname) {
this.studentname = studentname;
}
/**
* 得到教师对象
* @return teacher 教师对象
*/
public teacher getteacher() {
return teacher;
}
/**
* 设置教师对象
* @param teacher teacher 教师对象
*/
public void setteacher(teacher teacher) {
this.teacher = teacher;
}
/**
* 构造函数
* @param string string
* @param teacher teacher
*/
public student(string studentname, teacher teacher) {
this.studentname = studentname;
this.teacher = teacher;
}
}
3. 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 jbcm
hibernate.connection.password jbcm
hibernate.connection.url jdbc:oracle:thin:@localhost:1521:wsy
4. teacher.hbm.xml和student.hbm.xml
teacher.hbm.xml
<?xml version="1.0"?>
<!doctype hibernate-mapping
public "-//hibernate/hibernate mapping dtd 2.0//en"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping >
<class name="mypack.teacher" table="teachers" >
<id name="id" type="long" column="id">
<generator class="increment"/>
</id>
<property name="teachername" type="string" >
<column name="teachername" length="15" />
</property>
</class>
</hibernate-mapping>
student.hbm.xml
<?xml version="1.0"?>
<!doctype hibernate-mapping
public "-//hibernate/hibernate mapping dtd 2.0//en"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping >
<class name="mypack.student" table="students" >
<id name="id" type="long" column="id">
<generator class="increment"/>
</id>
<property name="studentname" type="string" >
<column name="studentname" length="15" />
</property>
<many-to-one
name="teacher"
column="teacher_id"
class="mypack.teacher"
cascade="save-update"
/>
</class>
</hibernate-mapping>
5. 数据库操作类
businessservice.java
package mypack;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.configuration;
import java.util.*;
public class businessservice{
//session工厂类
public static sessionfactory sessionfactory;
//实始化session工厂
static{
try{
//建立配置类,添加student类和teacher类
configuration config = new configuration();
config.addclass(student.class)
.addclass(teacher.class);
//得到sessionfactory对象
sessionfactory = config.buildsessionfactory();
}catch(exception e){e.printstacktrace();}
}
/**
* 通过学生类,查找教师类
* @param student student
* @throws exception
* @return list
*/
public list findteacherbystudent(student student) throws exception{
session session = sessionfactory.opensession();
transaction tx = null;
try {
tx = session.begintransaction();
list orders=(list)session.find("from student as o where o.teacher.id="+student.getid());
tx.commit();
return orders;
}catch (exception e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
}
/**
* 查找指定id的学生类
* @param student_id long
* @throws exception
* @return student
*/
public student findstudent(long student_id) throws exception{
session session = sessionfactory.opensession();
transaction tx = null;
try {
tx = session.begintransaction();
student student=(student)session.load(student.class,new long(student_id));
tx.commit();
return student;
}catch (exception e) {
if (tx != null) {
//发生错误,回滚
tx.rollback();
}
throw e;
} finally {
//没有错误,关闭session
session.close();
}
}
/**