Hibernate对Mysql数据库进行增删改

Hibernate对Mysql数据库进行增删改查代码

时间:2012-12-17 13:57来源:知行网www.zhixing123.cn 编辑:麦田守望者

一、前言

 在上一文<<持久层框架Hibernate环境配置和使用>>中,我们学习到了如何配置Hibernate环境,并使用Hibernate成功的创建了Test数据库和User表。那么如何对数据库进行增删改查数据呢?本文就简单的说一说。

二、前提准备

  使用前文讲到的方法,创建一个Hibernate_Cdb工程,并且创建持久化对象User.java,配置好相应的映射文件和配置文件。我们依然使用上 文使用的User类,在本工程中,还需要建立一个工具类,用来封装SessionFacroty对象。因为这样的话,在插入删除数据的时候就会方便的多。 首先创建工具类HibernateUnit.java:

package cn.zhixing123.www.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class HibernateUnit {
private static SessionFactory factory = null;
static{
try {
//读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
factory = cfg.buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
public static SessionFactory getSessionFactory(){
return factory;
}
public static Session getSession(){
return factory.openSession();
}
public static void closeSession(Session s){
if(s !=null){
if(s.isOpen()){
s.close();
}
}
}
}

三、向数据库中插入数据

  创建一个测试方法继承TestCase对象。以此创建有一个JUnit测试类。


JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。

  我们写一个测试方法testSave()来向数据库中插入数据:

public void testSave(){
Session session=null;
try{
session =HibernateUnit.getSession(); //得到工具类提供的Session对象
session.beginTransaction(); //开启数据库事物

/*创建User持久化对象,并为其赋值*/
User user = new User2();
user.setUsername("xiaohou");
user.setPassword("ff1989");
user.setCreateTime(new Date());
user.setExpireDate(new Date());
session.save(user); //调用session.save()保存数据
session.getTransaction().commit(); //提交事物,将数据写入数据库
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback(); //发生异常则回滚事物
}finally{
HibernateUnit.closeSession(session); //最后关闭Session
}
}

演示结果:

Hibernate对Mysql数据库进行增删改查代码1

向数据库插入了数据

四、查找数据库中的数据

   同样创建testGet()方法继承TestCase获取数据库数据,加载id为2的数据:

public void testGet(){
Session session = null;
try{
session = HibernateUnit.getSession();
session.beginTransaction();
User2 student=(User2)session.load(User2.class, 2); //除了load还可以使用get方法
System.out.println("student-name="+student.getUsername());
System.out.println("student-number="+student.getPassword());

session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUnit.closeSession(session);
}
}

演示结果:

Hibernate对Mysql数据库进行增删改查代码2

查询数据

五、更新数据库中的数据

  一般在更新一条数据的时候,通常需要先将数据加载进来,然后再更新。

public void testUpdate(){
Session session = null;
try{
session = HibernateUnit.getSession();
session.beginTransaction();
User2 student=(User2)session.load(User2.class, 2); //加载ID=2的数据
System.out.println("student-name="+student.getUsername());
System.out.println("student-number="+student.getPassword());
student.setUsername("Blog"); //修改姓名为Blog
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUnit.closeSession(session);
}
}

演示结果:

Hibernate对Mysql数据库进行增删改查代码3

更新了数据库中的数据

六、删除数据库中的数据

  和更新数据同理,先加载数据,再删除数据。

public void testDelete(){
Session session = null;
try{
session = HibernateUnit.getSession();
session.beginTransaction();
User2 student=(User2)session.load(User2.class, 2);//加载ID=2的数据
System.out.println("student-name="+student.getUsername());
System.out.println("student-number="+student.getPassword());
session.delete(student); //删除ID=2的数据
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUnit.closeSession(session);
}
}

演示结果:

Hibernate对Mysql数据库进行增删改查代码4

删除数据库数据

七、最后

  写到现在,已经学会了如何使用Hibernate对数据库数据进行增删改查了。那么上面提到的加载数据的load和get方法有何区别、先加载后删除或更新的原因、更新时将更新命令写在哪里能成功执行,带着种种疑问,下次接着开讲。

原文地址:https://www.cnblogs.com/HuiLove/p/5074142.html