文章目录
SessionFactory configuration.buildSessionFactory()
创建SessionFactorySession openSession()
获取Sessionsave(Object)
增加数据get(Class<T> cls,arg)
根据id查询update(Object object)
更新,一般先要根据条件获取到其中的记录,然后在其对象中修改delete(Object object)
删除session.beginTransaction()
开始事务rollback()
回滚commit()
提交事务public class HibernateUntil {
private static Configuration configuration;
private static SessionFactory sessionFactory;
/*
* 静态语句块中的内容只是在类加载的时候只创建一次,因此这里的大大减少了资源的消耗
*/
static {
// 加载核心配置文件hibernate.cfg.xml
configuration = new Configuration();
configuration.configure();
// 创建SessionFactotry对象
sessionFactory = configuration.buildSessionFactory();
}
//创建session对象,在测试类中可以使用这个静态方法获取session
public static Session getSession() {
return sessionFactory.openSession();
}
}
package cn.tedu.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import cn.tedu.bean.Student;
import cn.tedu.utils.HibernateUntil;
public class Demo1 {
/**
* 添加数据到数据库中
* save(Object object)
* 直接传入的是一个实体类的对象,我们在实体类中设置值,那么设置的值就会根据映射关系文件将其添加到指定的表的字段的值
*/
@Test
public void TestAdd() {
Session session = null;
Transaction transaction = null;
try {
// 创建session
session = HibernateUntil.getSession();
// 开始事务
transaction = session.beginTransaction();
Student student = new Student();
student.setAge(22);
student.setName("陈加兵");
// 保存数据到数据库
session.save(student);
// 提交事务
transaction.commit();
} catch (Exception exception) {
transaction.rollback(); // 事务回滚
} finally {
if (session!=null) {
session.close();
}
}
}
/**
* 删除数据
* 1. 根据id查询出想要删除的对象
* 2. 使用delete(Object obj) 删除
*/
@Test
public void testDelete(){
Session session = null;
Transaction transaction = null;
try {
// 创建session
session = HibernateUntil.getSession();
// 开始事务
transaction = session.beginTransaction();
Student student=session.get(Student.class, 1); //根据id查询想要删除的对象
session.delete(student); //删除查询到的对象
// 提交事务
transaction.commit();
} catch (Exception exception) {
transaction.rollback(); // 事务回滚
} finally {
if (session!=null) {
session.close();
}
}
}
/**
* 根据id查询数据,返回的是一个实体类对象
* get(Class<T> cls,id)
*/
@Test
public void testGet(){
Session session = null;
Transaction transaction = null;
try {
// 创建session
session = HibernateUntil.getSession();
// 开始事务
transaction = session.beginTransaction();
//查询id=1的数据,并且返回对象
Student student=session.get(Student.class, 1);
System.out.println(student);
// 提交事务
transaction.commit();
} catch (Exception exception) {
transaction.rollback(); // 事务回滚
} finally {
if (session!=null) {
session.close();
}
}
}
/**
* 测试更新数据
* 1. 先根据id获取指定的对象 get(Class<T> class,id)
* 2. 使用set方法修改对象中的属性值
* 3. update(Object object) 直接将对象更新即可
*/
@Test
public void TestUpdate() {
Session session = null;
Transaction transaction = null;
try {
// 创建session
session = HibernateUntil.getSession();
// 开始事务
transaction = session.beginTransaction();
//查询id=1的数据,并且返回对象
Student student=session.get(Student.class, 1);
student.setName("Jack");
student.setAge(33);
session.update(student);
// 提交事务
transaction.commit();
} catch (Exception exception) {
transaction.rollback(); // 事务回滚
} finally {
if (session!=null) {
session.close();
}
}
}
}