Hibernate session 操作 插入 删除 更新 get和load

本文提供了一个关于Hibernate框架的基础教程,包括配置文件设置、映射文件定义及Java代码实现等关键环节,展示了如何通过Hibernate进行数据库操作。

  点我下载本次教学视频和教学代码

项目结构:


Hibernate 配置文件

 hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
<session-factory>
	<property name="myeclipse.connection.profile">mysqlTest</property>
	<property name="connection.url">
		jdbc:mysql://10.2.11.6:3306/yyj  <!-- ?characterEncoding=utf-8 处理编码 -->
	</property>
	<property name="connection.username">root</property>
	<property name="connection.password">123456</property>
	<property name="connection.driver_class">
		com.mysql.jdbc.Driver
	</property>
	<property name="dialect">
		org.hibernate.dialect.MySQLDialect
	</property>
	<property name="show_sql">true</property>
	<property name="format_sql">true</property>
	<mapping resource="com/yns/pojo/Student.hbm.xml" />
</session-factory>
</hibernate-configuration>

hibernate映射文件

Student.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
	<class name="com.yns.pojo.Student" table="student">
	<!-- 属性名 和表的字段一样可以不写 -->
		<id name="id" column="id">
			<generator class="native"></generator>
		</id>
		<property name="name" column="name"></property>
		<property name="pass"></property>
	</class>
</hibernate-mapping>

TestMain.java

package com.yns.pojo;

import java.io.Serializable;
import java.util.List;

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

public class TestMain {
	public static void main(String[] args) {
		//主意Configuration()选hibernate下的 加载hibernate 配置文件
		Configuration configure = new Configuration().configure();//可以写configure(hibernate.cfg.xml),防止配置文件变动;
		SessionFactory sessionFactory = configure.buildSessionFactory();
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();
		//返回主键值 保存到数据库一条数据
		/*int  id = (Integer) session.save(new Student(0,"aa", "123456"));
		System.out.println(id+"");*/
		
		//查询全部
		/*Query query = session.createQuery("from Student");
		List<Student> list = query.list();
		for(Student stu:list){
			System.out.println(stu.toString());
		}*/
		
		//简单的条件查询
		/*Query query = session.createQuery("from Student where id=?");
		query.setParameter(0, 2);
		List<Student> list = query.list();
		for(Student stu:list){
			System.out.println(stu.toString());
		}*/
		
		//----------------一下可以通过 抛异常判断是否成功
		//简单的条件查询--------  get(操作的对象,主键值)  主键不存在则返回 null -----get 会立刻执行数据库 相应操作(无延迟加载)
		//Student stu = (Student) session.get(Student.class, 2);  //如果 2----》20   
		
		//简单的条件查询-------- load(操作的对象,主键值)  如果主键不存在 则会报错抛出异常   load不会立刻执行数据库 只有当获取的对象被使用的时候才会执行(延迟加载)
		//提高效率  所以不能随便关闭session  会是load 无法使用报错 no——session  过滤器 可以处理这个问题
		//Student stu = (Student) session.load(Student.class, 2);
		
		
		//更新
		session.update(new Student(2, "张三","123456"));
		//System.out.println(stu);// 2--->20  get结果为null  20是不存在的主键值    load 报错
		
		//删除
		Student student = new Student();
		student.setId(1);
		session.delete(student);
		
		transaction.commit();//提交事务
		
	}

}

Ps:源码下载路径: 点我下载源码



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值