• 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方法有何区别、先加载后删除或更新的原因、更新时将更新命令写在哪里能成功执行,带着种种疑问,下次接着开讲。

  • 相关阅读:
    数据库三大范式
    idea连接sqlite
    Javascript中==和===的区别
    手机商城项目(修饰技术)
    FastJSON、Gson、Jackson(简单了解使用)
    SiteMesh配置下载使用(简单介绍)
    html5中event获取data和class
    jsp的4个作用域区别( pageScope、requestScope、sessionScope、applicationScope)
    <jsp:include>和<%@include file=""%>的区别(简单了解)
    Check-Point-Security-Gateway-BYOL-R77.30-041.161
  • 原文地址:https://www.cnblogs.com/HuiLove/p/5074142.html
Copyright © 2020-2023  润新知