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 } }
演示结果:
向数据库插入了数据
四、查找数据库中的数据
同样创建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); } }
演示结果:
查询数据
五、更新数据库中的数据
一般在更新一条数据的时候,通常需要先将数据加载进来,然后再更新。
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); } }
演示结果:
更新了数据库中的数据
六、删除数据库中的数据
和更新数据同理,先加载数据,再删除数据。
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对数据库数据进行增删改查了。那么上面提到的加载数据的load和get方法有何区别、先加载后删除或更新的原因、更新时将更新命令写在哪里能成功执行,带着种种疑问,下次接着开讲。
|