Hibernate配置映射完毕,就可以在DAO中测试Hibernate是否能实现增删改查的一些操作
这里,我们用简单的程序来模拟DAO的功能。首先需要利用Hibernate中的API载入配置并建立连接
(1)读取Hibernate配置文件。使用Hibernate包中的Configuration类读取配置文件的方法configure(),读取默认的hibernate.cfg.xml文件
(2)Hibernate中,数据库操作是用Hibernate包中的Session完成的,Session有Hibernate包中的SessionFactory管理,所以需要生成SessionFactory
(3)利用SessionFactory打开Session
(4)利用Session操作数据库
添加操作
利用Session将数据保存到数据库中的方法如下:
Session.save(obj);
Session的事务不是自动提交的,需要开启一个事务Transaction
在包dao中新建一个Insert类,用来测试Hibernate的添加功能
代码如下:
package dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import po.Student;
public class Insert {
public static void main(String[] args) {
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory= configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
//定义类,并设置属性
Student student = new Student();
student.setStuno("0001");
student.setStuname("张三");
student.setStusex("男");
Transaction transaction = session.beginTransaction();
session.save(student);
transaction.commit();
//关闭session
session.close();
}
}
运行主函数,发现数据已经添加到数据库中
查找操作
同样编写查找类Find,模拟查找
package dao;
import org.eclipse.jdt.internal.compiler.batch.Main;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import po.Student;
public class Find {
public static void main(String[] args) {
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Student student =session.get(Student.class, "0002");
System.out.println(student.getStuno()+","+student.getStuname()+","+student.getStusex());
//查找功能不需要Transaction事务的提交
session.close();
}
}
测试效果如下:
修改操作
编写修改类Updata
要修改,就要先查找然后进行修改
package dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import po.Student;
public class Updata {
public static void main(String[] args) {
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Student student =session.get(Student.class, "0002");
student.setStusex("女");
Transaction transaction = session.beginTransaction();
session.update(student);
transaction.commit();
session.close();
}
}
效果如下:
删除操作
编写删除类Delete
方法与修改雷同
package dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import po.Student;
public class Delete {
public static void main(String[] args) {
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Student student =session.get(Student.class, "0002");
Transaction transaction = session.beginTransaction();
session.delete(student);
transaction.commit();
session.close();
}
}
运行后结果:
到这里,一个简单的用hibernate框架对数据库增删改查的项目已经完成