小白记录~hibernate旧石器时代方法buildSessionFactory();连接MySQL方法

本文介绍了一个使用Hibernate框架实现的学生信息管理系统的增删改查功能示例。通过具体的代码实现了学生信息的添加、删除、更新和查询操作,并详细展示了如何配置Hibernate以及如何与数据库进行交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

菜鸟第一次写   多多见谅
Save方法的执行流程:
    1. 新建一个Configuration对象
    2. 利用方法
Configuration.configure()加载`hibernate.cfg.xml`文件
    3. 根据
hibernate.cfg.xml中的配置连接数据库,并配置相关的property属性
    4. 加载解析映射文件, 把映射文件中的信息保存在Configuration对象中
    5. 根据
config创建SessionFactory对象, 并创建session对象
    6. 调用
session中的save(),delete(),update(),get();createQuery()进行增删改查
所需要JAR包

废话不多说  上代码

获取Session
package com.gxxy.student.util;

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

@SuppressWarnings("deprecation")
public class HibernateUitl {
	static SessionFactory sessionFactory;
	static{
		//将buildSessionFactory();放入静态代码块
		sessionFactory = new Configuration().configure().buildSessionFactory();
		//ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(configure.getProperties()).buildServiceRegistry();
				//Session session=configure.buildSessionFactory(sr).openSession();
	}
	//取得Session对象
	public static Session getSession(){
		return sessionFactory.openSession();
	}
}


Student类
package com.gxxy.student.domain;

public class Student {
private int id;
private String name;
private int age;
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getAge() {
	return age;
}
public void setAge(int age) {
	this.age = age;
}
public Student(int id) {
	this.id = id;
}
public Student() {}
@Override
public String toString() {
	return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}


StudentDao接口
package com.gxxy.student.dao;

import java.util.List;

import com.gxxy.student.domain.Student;

public interface StudentDao {
	/**
	 * 增加数据
	 */
	public void save(Student s);
	/**
	 * 删除数据
	 */
	public void delete(Student s);
	/**
	 * 修改数据
	 */
	public void update(Student s);
	/**
	 * 查询一条数据
	 */
	public Student get(Student s);
	/**
	 * 查询所有数据
	 */
	public List<Student> list();
}

StudentDaoIMPL实现类
package com.gxxy.student.daoimpl;

import java.util.List;

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

import com.gxxy.student.dao.StudentDao;
import com.gxxy.student.domain.Student;
import com.gxxy.student.util.HibernateUitl;

public class StudentDaoIMPL implements StudentDao{
	//具体的调用Sisson中的方法
	@Override
	public void save(Student s) {
		Session session = HibernateUitl.getSession();
		//改变数据库内容时必须调用事务
		session.beginTransaction();
		session.save(s);
		session.getTransaction().commit();
		session.close();
	}

	@Override
	public void delete(Student s) {
		Session session = HibernateUitl.getSession();
		session.beginTransaction();
		session.delete(s);
		session.getTransaction().commit();
		session.close();
	}

	@Override
	public void update(Student s) {
		Session session = HibernateUitl.getSession();
		session.beginTransaction();
		session.update(s);
		session.getTransaction().commit();
		session.close();
	}

	@Override
	public Student get(Student s) {
		Session session = HibernateUitl.getSession();
		Student student= (Student) session.get(s.getClass(), s.getId());
		session.close();
		return student;
	}

	@Override
	public List<Student> list() {
		Session session = HibernateUitl.getSession();
		Query query = session.createQuery("SELECT stu FROM Student stu");
		@SuppressWarnings("unchecked")
		List<Student> list = query.list();
		return list;
	}

}


Student.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<!-- 链接Student类与表的名字 -->
	<class name="com.gxxy.student.domain.Student" table="Student">
		<id name="id" column="s_id"><!-- 设置id为主键,根据它去取得数据 -->
			<generator class="native"></generator>
		</id><!-- 设置Student对象与表中字段一一对应 -->
		<property name="name" column="s_name"/>	
		<property name="age" column="s_age"/>	
	</class>

</hibernate-mapping>



 
 
hibernate.cfg.xml
<!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><!-- 在控制台打印Hibernate自动生成的SQL语句 -->
		<property name="show_sql">true</property>
		<!-- 设置连接数据库的四大参数 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///test</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<!-- 导入映射文件 -->
		<mapping resource="com/gxxy/student/domain/Student.hbm.xml"/>
	</session-factory>
</hibernate-configuration>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值