zoukankan      html  css  js  c++  java
  • 通过Hibernate实现添加功能

    package com.demo.dao;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import com.demo.Login;
    
    public class LoginDAO {
        
        private Session session=null;
        private Transaction tran=null;
        
        public LoginDAO(){
            //创建Configuration对象
            Configuration config = new Configuration().configure();
            //创建Session工厂
            SessionFactory sessionFactory = config.buildSessionFactory();
            //得到Session对象
            session = sessionFactory.openSession();
        }
        
        public void save(Login login){
            try {
                //开启事务
                tran=session.beginTransaction();
                //将传递进来的login对象存入数据库
                session.save(login);
                //提交事务
                tran.commit();
                //提示信息
                System.out.println("用户信息保存成功!");
            } catch (RuntimeException e) {
           //捕获并处理异常
           if(null!=tran){tran.rollback;}
    throw e; }finally{ //关闭Session对象 session.close(); } } }

      在这个类中用到了Session和Transaction对象,这里的Session对象是hibernate3.jar包中的Session对象,对数据库的所有操作都要通过Session来完成。Transaction对象用来处理对数据库操作的事务。

      在构造方法中实例化Session对象。实例化的过程是,首先找到Hibernate配置,然后从配置中取出SessionFactory,也就是Session工厂,最后从SessionFactory中取出Session。向login表中添加数据的save()方法是将Login类型的对象login作为形参传入方法中。在对数据库操作的时候有可能会抛出运行时异常,所有用try-catch结构来捕获异常。然后进行login 表的添加操作。

      进行添加操作时,首先实例化Transaction对象,就是开启事务。然后调用Session对象的save()方法,并将Login类型的对象传入该方法。接下来就是调用事务对象的commit()方法提交到数据库,并关闭Session对象。如果出现异常,就会将事务进行回滚。

      回顾实现添加的功能,总结一下在Hibernate中执行持久化操作的步骤:

      1> 读取并解析配置文件:

      Configuration config = new Configuration().configure();

      2> 读取并解析映射信息,创建SessionFactory:

      SessionFactory sessionFactory = config.buildSessionFactory();

      3> 打开Session:

      session = sessionFactory.openSession();

      4> 开启事务(增,删,改操作必须有,查询操作可选):

      tran = session.beginTransaction();

      5> 持久化操作:

      session.save(login);

      6> 提交事务:

      tran.commit();

      7> 关闭Session:

      session.close();

  • 相关阅读:
    bzoj1662: [Usaco2006 Nov]Round Numbers 圆环数
    畅通工程——D
    Constructing Roads——F
    FatMouse's Speed——J
    Tickets——H
    免费馅饼——G
    Max Sum Plus Plus——A
    Super Jumping! Jumping! Jumping!——E
    Fling——K
    #define is unsafe——I
  • 原文地址:https://www.cnblogs.com/leny/p/4799704.html
Copyright © 2011-2022 走看看