多个班级对应一个年级表 schoolclass id name grade_id
grade id name
实体bean Grade.java
package my.bean;
public class Schoolclass implements java.io.Serializable {
private long id;
private String name;
private Grade grade;
public Schoolclass() {
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Grade getGrade() {
return grade;
}
public void setGrade(Grade grade) {
this.grade = grade;
}
}
package my.bean;
public class Grade implements java.io.Serializable {
private long id;
private String name;
public Grade() {
}
public Grade(String name) {
this.name = name;
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
映射 Schoolclass.hbm.xml
<hibernate-mapping>
<class name="my.bean.Schoolclass" table="schoolclass"
catalog="musichouse">
<id name="id" type="long">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name" length="11" />
</property>
<many-to-one name="grade" class="my.bean.Grade"
column="grade_id" update="false" insert="false"></many-to-one>
</class>
</hibernate-mapping>
Grade.hbm.xml
<hibernate-mapping>
<class name="my.bean.Grade" table="grade" catalog="musichouse">
<id name="id" type="long">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name" length="11" />
</property>
</class>
</hibernate-mapping>
使用
<%
Dboperator dbo=new Dboperator();
// dbo.getallclass2();
Grade grade= dbo.getGrade("1");
out.println("id1的班级对应的年级是"+new String(grade.getName
().getBytes("iso-8859-1"),"GB2312"));
%>
public Grade getGrade(String id)
{
Configuration config = new Configuration().configure();
SessionFactory sessionFactory =
config.buildSessionFactory();
Grade grade = new Grade();
Schoolclass schoolclass=new Schoolclass();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String hql="from Schoolclass where id="+id;
List mylist=session.createQuery(hql).list();
if(mylist.size()>0)
{
schoolclass=(Schoolclass)mylist.get(0);
}
grade=schoolclass.getGrade();
//session.close();
sessionFactory.close();
return grade;
}
好处 使用班级类的getGrade方法可以获得整个Grade,而以前用表只能获得grade_id,
再根据grade_id取别的字段信息,麻烦..
session方法 list = session.createQuery(hql).list(); //查询 session.save(grade); //添加, session.update(grade);//更新 session.delete(grade);//删除
问题: session的一些操作写在Transaction之间有什么好处? Transaction tx = session.beginTransaction(); session查询,添加,更新,删除 tx.commit();