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();

通过Hibernate实现添加功能的更多相关文章

  1. hibernate HQL添加语句

    1.Hibernate HQL添加语句 save();方法使用HQL语句来完成插入操作是不能实现的,不管你使用insert into....values...还是insert into.....sel ...

  2. [课程设计]Scrum 2.6 多鱼点餐系统开发进度(下单一览页面-菜式添加功能实现)

    Scrum 2.6 多鱼点餐系统开发进度  (下单一览页面-菜式添加功能实现) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...

  3. [课程设计]Scrum 2.7 多鱼点餐系统开发进度(下单一览页面-菜式添加功能的继续实现)

    Scrum 2.7 多鱼点餐系统开发进度  (下单一览页面-菜式添加功能的继续实现) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团 ...

  4. 框架的 总结(nop)------添加功能

    一.添加功能 1.首先需要在前端显示界面View视图中添加 <div class="pull-right"> <a href="@Url.Action( ...

  5. freemarker中修改和添加功能中包含checkbox复选框默认选中需求的解决方式

    今天做的公司ERP系统上线第一天内部使用的,各种BUG铺天盖地,[虽然只是技术总监一个人在测试……],其中有一个就是其中部门管理页面中的修改和添加功能 一个人做一套ERP总是有点疏漏的,虽然里面的东西 ...

  6. Java基础知识强化38:StringBuffer类之StringBuffer的添加功能

    1. StringBuffer的添加功能: public  StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身. publ ...

  7. JAVAEE——BOS物流项目03:学习计划、messager、menubutton、登陆拦截器、信息校验和取派员添加功能

    1 学习计划 1.jQuery easyUI messager使用方式 n alert方法 n confirm方法 n show方法 2.jQuery easyUI menubutton使用方式 3. ...

  8. stark组件开发之添加功能实现

    添加功能,还是使用, form 组件来完成!  并且 完成添加之后,需要保留原搜索条件. def memory_url(self): '''用于反向生成url, 并且携带,get请求的参数,跳转到下一 ...

  9. iOS 添加功能引导图

    iOS 添加功能引导图 首次安装app之后,打开app首页,有一张功能引导图,其实最简单的一种做法是,直接在这个首页上加一个蒙层图片. 在蒙层上用气泡显示文字注明功能介绍,这个蒙层图片,让你们的UI设 ...

随机推荐

  1. Android中DatePicker与TimePicker用法讲解(包括DatePickerDialog与TimePickerDialog)

    实现效果:将DatePicker和TimePicker修改的日期和时间实时显示在程序标题栏上. 1.通过DatePicker和TimePicker来实现 布局为main.xml <?xml ve ...

  2. sql server time(7) 默认值

    语句为 ALTER TABLE dbo.YourTable ADD CONSTRAINT DF_TimeDefault DEFAULT '00:00:00' FOR YourTimeColumn 比如 ...

  3. PHP并发IO编程实践

    PHP相关扩展 Stream:PHP内核提供的socket封装 Sockets:对底层Socket API的封装 Libevent:对libevent库的封装 Event:基于Libevent更高级的 ...

  4. 【剑指Offer】30、连续子数组的最大和

      题目描述:   HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是 ...

  5. [jzoj5786]【NOIP2008模拟】观察 (dfs序+lca)

    传送门 Description infleaking十分愉快地走在路上, 因为经过10^9^9^9年后, 他得到了一个新技能--观察大法. 刚出来的infleaking就想要挑战自我. 为什么infl ...

  6. 【2】Django安装

    **万物负阴而抱阳,冲气以为和 ** ——老子<道德经> 我们静下心态,开始我们的Django之旅 本节内容 Django的安装 安装结果验证 了解官方文档 1. 安装Django 我们强 ...

  7. Java 集合之Collection 接口和遍历方法

    这几篇是我按网上的教程来实习的. URL: http://www.cnblogs.com/jbelial/archive/2013/03/27/2981395.html 打代码的感觉挻好的.. 注意在 ...

  8. IT人才异军突起 有招网引领业界精英

    随着网络时代的到来,IT人才也在不断的增长.当然,不仅IT行业对IT人才需求旺盛.部分传统企业为打造互联网时代下的企业,也在紧锣密鼓的招聘IT人才.据统计.眼下我国各地对IT人才的需求已经占领总体人才 ...

  9. 多版本号并发控制(MVCC)在实际项目中的应用

    近期项目中遇到了一个分布式系统的并发控制问题.该问题能够抽象为:某分布式系统由一个数据中心D和若干业务处理中心L1,L2 - Ln组成:D本质上是一个key-value存储,它对外提供基于HTTP协议 ...

  10. Marching squares &amp; Marching cubes

    提要 Marching squares 主要是用于从一个地图(用二维数组表示)生成轮廓的算法.Marching cubes则相应的是在空间生成网格的方法.最常见的应用就是天气预报中气压图的生成.还经常 ...