学生-课程-分数关系的设计 hibernate

Student.java

package studentinfo;

import java.util.HashSet;
import java.util.Set;

public class Student {
	public int id;
	public String sname;
	public Set<Course> courses=new HashSet<Course>();
	
	public Student() {}
	
	public Student(int id,String sname) {
		this.id = id;
		this.sname= sname;
	}
	
   public Set<Course> getCourses() {
        return courses;
    }
    public void setCourses(Set<Course> courses) {
        this.courses = courses;
    }
	    
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}

}

Course.java 和 Student.java 类似

Score.java

	public Score{
        public int id;	
	public Student student;
	public Course course;
	public float score;
	
	public Score() {}
	
	public Score(int id) {
		this.id = id;
	}
	public Score(int id,Student student,Course course) {
		this(id);
		this.student = student;
		this.course = course;
	}
	
	public Score(int id,Student student,Course course,float score) {
		this(id,student,course);
		this.score = score;
	}
// setter,getter 方法省略
}

Course.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="studentinfo.Course" table="course">
  <id name="id" type="java.lang.Integer">
  <column name="id"></column>
    <generator class="assigned"/>
  </id>
  <property name="cname" type="java.lang.String">
  <column name="cname"/>
  </property>
  </class>
</hibernate-mapping>

Student.hbm.xml 和 Course.hbm.xml 类似

Score.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="studentinfo.Score" table="score">
<id name="id" type="int">
<column name="id" />
<generator class="assigned" />
</id>
<property name="score" type="float">
<column name="score"/>
</property>
<many-to-one name="student" class="studentinfo.Student" fetch="join">
<column name="sno"/>
</many-to-one>
<many-to-one name="course" class="studentinfo.Course" fetch="join">
<column name="cno" />
</many-to-one>
</class>
</hibernate-mapping>

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>    
      <!-- Database connection settings -->
        <property name="connection.url">jdbc:mysql://localhost:3306/studentinfo</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">10</property>
        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>
        <!-- Disable the second-level cache -->
        <property name="cache.provider_class">
            org.hibernate.cache.NoCacheProvider
        </property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
         <property name="format_sql">true</property>
        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">update</property>   
	<mapping resource="studentinfo/Student.hbm.xml"/>	
	<mapping resource="studentinfo/Score.hbm.xml"/>	
	<mapping resource="studentinfo/Course.hbm.xml"/>   
    </session-factory>
</hibernate-configuration>

ScoreDao.java

package operate;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import studentinfo.Score;

public class ScoreDao {
	
	public static void addScore(Score sc,Session session) {
		session.save(sc);		
	}
	public static void selectScore(Session session) {
		Query query = session.createSQLQuery("select * from score").addEntity(Score.class);
		@SuppressWarnings("unchecked")
		List<Score> list = query.list();
		for(Score score:list) {
			System.out.println(score.getId()+"\t"+score.getScore()+"\t"+score.getCourse().getId()+"\t"+score.getStudent().getId());
		}	
	}
	public static void updateScore(Score sc,Session session) {
		session.update(sc);		
	}
	public static void deleteScore(Score sc,Session session) {
		session.delete(sc);	
	}
	
}

Test.java

package operate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import studentinfo.Student;

public class Test {
	static Session session = getSession();
	
	public static void main(String[] args) {
		
		Transaction transaction =session.beginTransaction();
//		Student st1 = new Student(2, "qq");
//		Course c1 = new Course(2, "jsp");
//		Score sc1 = new Score(1, st1, c1, 98);
		
//		StudentDao.addStudent(st1, session);
//		CourseDao.addCourse(c1, session);
//		ScoreDao.addScore(sc1,session);	
		
//		ScoreDao.selectScore(session);
		Student student = new Student(6, "handsomeq");		
		StudentDao.addStudent(student, session);
		student.setSname("superhandsome");
		StudentDao.updateStudent(student, session);
		StudentDao.deleteStudent(student, session);
		
		transaction.commit();
		session.close();
		
	}
	public static Session getSession(){
		
	    Configuration cfg = new Configuration().configure();
	    //获取SqlSessionFactory
	    @SuppressWarnings("deprecation")
		SessionFactory factory = cfg.buildSessionFactory();
	    //获得SqlSession
	    Session session=(Session) factory.openSession();
	    return session;
	}

}

图片:

猜你喜欢

转载自blog.csdn.net/Tjhfsghbjknjdy/article/details/85197352