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. yar 调用rpc方法

    <?php class RpcController extends Yaf_Controller_Abstract { //RPC入口 public function indexAction($ ...

  2. 去掉二级页面 tabs 菜单, 修改返回按钮

    imports: [ /*引入的模块 依赖的模块*/ BrowserModule, ComponentsModule, IonicModule.forRoot(MyApp,{ tabsHideOnSu ...

  3. Phpstudy apache2 配置 https

    我tm竟然搞了一下午 最终原因是因为443 端口被 SVN服务器占用了 一定要查看端口是否被占用 太深刻了这次 粗心大意 !!! 1:打开PHPstudy php扩展设置,在php_openssl上点 ...

  4. shell 结合expect实现ssh登录并执行命令

    #!/bin/bash ips=( '127.0.0.1' ) ;i<${#ips[*]};i++)) do expect <<EOF #这里的 expect <<EOF ...

  5. linux下关闭键盘的重复击键

    https://askubuntu.com/questions/576421/disable-keyboard-repeat-from-command-line You can use the xse ...

  6. Python-Pandas简单操作

    1.直接构建复杂嵌套索引 2. MultiIndex方式构建复杂的索引 多层索引操作 pandas堆叠处理

  7. 网上有一种错误的做法是:因为每一个双连通分量内的点low[]值都是相同的,则dfs()时,对于一条边(u,v),只需low[u]=min(low[u],low[v]),这样就不用缩点,最后求度数的时候

  8. CODEVS——T 1004 四子连棋

    http://codevs.cn/problem/1004/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descr ...

  9. Spring MVC-环境设置(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_environment_setup.htm 说明:示例基于Spring MVC 4 ...

  10. requestAnimationFrame实现浏览器兼容

    requestAnimationFrame是比setInterval更高效更平滑的动画实现. 兼容性查看:http://caniuse.mojijs.com/Home/Html/item/key/re ...