栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用Hibernate进行父子表的CRUD操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Hibernate进行父子表的CRUD操作

使用Hibernate进行父子表的CRUD操作
  • Student.java
  • Student.hbm.xml
  • Course.java
  • Course.hbm.xml
  • HibernateUtil.java
  • StudentDAO.java
  • CourseDAO.java
  • hibernate.cfg.xml
  • Test.java
  • 测试结果截图(部分)

要求
1)目的:真正学会使用Hibernate来进行增加、查询、更新、删除操作
2)内容:在数据库中建立父子表,分别能对父子表进行增加、查询、更新、删除操作,一定要实现分页功能。

1、 新建一个名为test10的数据库,并新建表student_table、course_table。其中student_table为父表,course_table为子表。



2、 创建Student类、Course类,以及对应的xml文件

Student.java

位置: com.bnuz.domain

package com.bnuz.domain;

public class Student {
	private Integer id;
	private String name;
	private String academy;
	
	public Student() {
		// TODO Auto-generated constructor stub
	}
	// getter / setter 略...
}

Student.hbm.xml

位置: com.bnuz.domain




	
		
			
		
		
		
	

Course.java

位置:com.bnuz.domain

package com.bnuz.domain;

public class Course {

	private Integer courseNo;
	private String courseName;
	private Student student;

	public Course() {
		// TODO Auto-generated constructor stub
	}
	// getter /setter 略...
}

Course.hbm.xml

位置:com.bnuz.domain




	
		
			
		
		

		
	

3、新建HibernateUtil类

HibernateUtil.java

位置:com.bnuz.hibernate

package com.bnuz.hibernate;

import org.hibernate.*;
import org.hibernate.cfg.*;

public class HibernateUtil {
	public static final SessionFactory sessionFactory;
	static {
		try {
			Configuration configuration = new Configuration().configure();
			sessionFactory = configuration.buildSessionFactory();
		} catch (Throwable ex) {
			System.err.println("初始化sessionFactory失败." + ex);
			throw new ExceptionInInitializerError(ex);
		}
	}
	public static final ThreadLocal session = new ThreadLocal();

	public static Session currentSession() throws HibernateException {
		Session s = session.get();
		if (s == null) {
			s = sessionFactory.openSession();
			session.set(s);
		}
		return s;
	}

	public static void closeSession() throws HibernateException {
		Session s = session.get();
		if (s != null)
			s.close();
		session.set(null);
	}
}

4、 创建StudentDAO类,CourseDAO类。编写增删改查及分页方法。。
位置:com.bnuz.dao

StudentDAO.java
package com.bnuz.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.bnuz.domain.Student;
import com.bnuz.hibernate.HibernateUtil;

public class StudentDAO {
	
	public static void addStudent(Student student) {
		Session session = HibernateUtil.currentSession();
		Transaction transaction = session.beginTransaction();
		session.save(student);
		transaction.commit();
		HibernateUtil.closeSession();
	}

	
	public static void delStudent(int id) {
		Session session = HibernateUtil.currentSession();
		Transaction transaction = session.beginTransaction();
		session.createQuery("delete Course where student=" + id).executeUpdate();
		session.createQuery("delete Student where id=" + id).executeUpdate();
		transaction.commit();
		HibernateUtil.closeSession();
	}

	
	public static void updateStudent(Student student) {
		Session session = HibernateUtil.currentSession();
		Transaction transaction = session.beginTransaction();
		session.update(student);
		transaction.commit();
		HibernateUtil.closeSession();
	}

	
	public static void findStudent(int id) {
		Session session = HibernateUtil.currentSession();
		Transaction transaction = session.beginTransaction();
		Student student = (Student) session.get(Student.class, id);
		System.out.println("name:" + student.getName() + " academy:" + student.getAcademy());
		transaction.commit();
		HibernateUtil.closeSession();
	}

	
	public static void PagingQueryStudent(int pageNo, int pageSize) {
		Session session = HibernateUtil.currentSession();
		Transaction transaction = session.beginTransaction();
		Query query = session.createQuery("from Student");
		query.setMaxResults(pageSize);
		query.setFirstResult((pageNo - 1) * pageSize);
		List list = query.list();
		System.out.println("--第" + pageNo + "页,每页至多有" + pageSize + "条数据----");
		for (Student student : list) {
			System.out.println(student.getId() + " " + student.getName() + " " + student.getAcademy());
		}
		transaction.commit();
		HibernateUtil.closeSession();
	}
}

CourseDAO.java
package com.bnuz.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.bnuz.domain.Course;
import com.bnuz.hibernate.HibernateUtil;

public class CourseDAO {
	
	public static void addCourse(Course course) {
		Session session = HibernateUtil.currentSession();
		Transaction transaction = session.beginTransaction();
		session.save(course);
		transaction.commit();
		HibernateUtil.closeSession();
	}

	
	public static void delCourse(int courseNo) {
		Session session = HibernateUtil.currentSession();
		Transaction transaction = session.beginTransaction();
		session.createQuery("delete Course where courseNo=" + courseNo).executeUpdate();
		transaction.commit();
		HibernateUtil.closeSession();
	}

	
	public static void updateCourse(Course course) {
		Session session = HibernateUtil.currentSession();
		Transaction transaction = session.beginTransaction();
		session.update(course);
		transaction.commit();
		HibernateUtil.closeSession();
	}

	
	public static void findCourse(int courseNo) {
		Session session = HibernateUtil.currentSession();
		Transaction transaction = session.beginTransaction();
		Course course = (Course) session.get(Course.class, courseNo);
		System.out.println("id为" + course.getStudent().getId() + "学生" + course.getStudent().getName() + "选修了课程:"
				+ course.getCourseName());
		transaction.commit();
		HibernateUtil.closeSession();
	}

	
	public static void PagingQueryCourse(int pageNo, int pageSize) {
		Session session = HibernateUtil.currentSession();
		Transaction transaction = session.beginTransaction();
		Query query = session.createQuery("from Course");
		query.setMaxResults(pageSize);
		query.setFirstResult((pageNo - 1) * pageSize);
		List list = query.list();
		System.out.println("--第" + pageNo + "页,每页至多有" + pageSize + "条数据---");
		for (Course course : list) {
			System.out.println(course.getCourseNo() + " " + course.getCourseName() + " " + course.getStudent().getId());
		}
		transaction.commit();
		HibernateUtil.closeSession();
	}
}

5、配置hibernate.cfg.xml

hibernate.cfg.xml

位置:src




    
        
        com.mysql.jdbc.Driver
        jdbc:mysql://localhost:3306/test10?serverTimezone=GMT%2B8
        root
        4580796   
        20
        1
        org.hibernate.dialect.MySQLDialect
        update
        true
        update
        true
        
        
    

6、编写测试类Test,测试所有方法

Test.java
import com.bnuz.dao.CourseDAO;
import com.bnuz.dao.StudentDAO;
import com.bnuz.domain.Course;
import com.bnuz.domain.Student;

public class Test {

	public static void main(String[] args) {
		Test test = new Test();
		

	}
		
	private void testAddCourse() {
		Course course = new Course();
		course.setCourseName("C");
		Student student = new Student();
		student.setId(2);
		course.setStudent(student);
		CourseDAO.addCourse(course);
	}
	
	private void testDelCourse() {
		CourseDAO.delCourse(1);
	}
	
	private void testUpdateCourse() {
		Course course = new Course();
		course.setCourseNo(1);
		course.setCourseName("JAVA快乐入门教程");
		Student student = new Student();
		student.setId(2);
		course.setStudent(student);
		CourseDAO.updateCourse(course);
	}
	
	private void testFindCourse() {
		CourseDAO.findCourse(1);
	}
	
	private void testPagingQueryCourse() {
		CourseDAO.PagingQueryCourse(1, 4);
	}
	
	private void testPagingQueryStudent() {
		//StudentDAO.PagingQueryStudent(1, 3);
		StudentDAO.PagingQueryStudent(2, 3);
	}
	private void testFindStudent() {
		StudentDAO.findStudent(1);
	}
	
	private void testDelStudent() {
		StudentDAO.delStudent(1);
	}

	private void testAddStudent() {
		Student student = new Student();
		student.setName("yeye");
		student.setAcademy("信息技术学院");
		StudentDAO.addStudent(student);
	}
	private void testUpdateStudent() {
		Student student = new Student();
		student.setId(1);
		student.setName("hey");
		student.setAcademy("信息技术学院");
		StudentDAO.updateStudent(student);
	}
}

测试结果截图(部分)



…………

(;´д`)ゞ菜鸟一枚,,水水博客,如有问题,欢迎指教!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855496.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号