初始化配置和session

  关于配置文件这里就不在赘述了,假设配置文件配好后我们需要加载配置和sessionFactory,并获取session,因为每次进行增删改查时都需要session,所以封装成了一个工具类

package tool;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtil {
private static Configuration configuration;
private static SessionFactory sessionFactory;
//初始化配置和sessionFactory
static {
try {
configuration = new Configuration().configure();
sessionFactory =configuration.buildSessionFactory();
} catch (HibernateException e) {
throw new ExceptionInInitializerError();
}
}
private HibernateUtil(){}
//获取session对象
public static Session currentSession(){
return sessionFactory.getCurrentSession();
}
}

添加

dao层

public void addEmp(Emp emp){
//添加 保存所传过来的对象
HibernateUtil.currentSession().save(emp);
}

service层

public void add(Emp emp){
Transaction tx=null;
try {
//打开事务
tx=HibernateUtil.currentSession().beginTransaction();
empDao.addEmp(emp);
//提交
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if (tx!=null)
//回滚
tx.rollback();
}
}

测试类

public static void main(String[] args){
EmpSerivce empSerivce = new EmpSerivce();
Emp emp = new Emp();
emp.setEmpno(7903);
emp.setEname("张三");
emp.setDeptNo(20);
emp.setHiretDate(Date.valueOf("2015-06-24"));
emp.setJob("CLERK");
emp.setSal(9000);
empSerivce.add(emp);
}

结果 

修改

dao层

public Emp update(Serializable id){
//加载需要修改的对象
return (Emp)HibernateUtil.currentSession().get(Emp.class,id);
}

service层

public void updateEmp(){
Transaction tx = null;
try {
tx= HibernateUtil.currentSession().beginTransaction();
Emp empUpdate = empDao.update(7903);
empUpdate.setSal(9999);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if(tx!=null)
tx.rollback(); //回滚事务
}
}

测试类

 public static void main(String[] args) {
EmpService empService = new EmpService();
empService.updateEmp();
}

结果:可以看到修改成功了 从9000 变成了 9999

删除

dao层

public void delete(Emp emp){
//删除指定的对象
HibernateUtil.currentSession().delete(emp);
}

service层

public void delEmp(Integer id){
Transaction tx =null;
try {
tx=HibernateUtil.currentSession().beginTransaction();
empDao.delete(empDao.update(id));//使用update获得指定对象 通过delete删除
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
if(tx!=null)
tx.rollback();
}
}

测试类

  public static void main(String[] args) {
EmpService empService = new EmpService();
   //删除
empService.delEmp(7903);
}

结果:

使用hibernate框架连接oracle数据库进行简单的增删改的更多相关文章

  1. Delphi - cxGrid连接Oracle数据库 实现数据的增删改查

    cxGrid连接Oracle数据库 实现数据的增删改查 cxGrid连接Oracle数据库 1:通过OraSession连接数据库.OraDataSet实现OraSession和OraDataSour ...

  2. python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作

    1.通过 pip 安装 pymysql 进入 cmd  输入  pip install pymysql   回车等待安装完成: 安装完成后出现如图相关信息,表示安装成功. 2.测试连接 import ...

  3. idea中创建web项目搭建Hibernate框架连接oracle数据库

    hibernate框架 hibernate是数据化持久工具,也是一个开源代码的ORM解决方案.hibernate内部封装了通过jdbc访问数据库的操作,向商场应用提供面向对象的数据访问api. hib ...

  4. 使用JDBC分别利用Statement和PreparedStatement来对MySQL数据库进行简单的增删改查以及SQL注入的原理

    一.MySQL数据库的下载及安装 https://www.mysql.com/ 点击DOWNLOADS,拉到页面底部,找到MySQL Community(GPL)Downloads,点击 选择下图中的 ...

  5. 用JDBC连接 数据库 进行简单的增删改查

    JDBC为java的基础.用jdbc实现对数据库的增删改查的功能是程序员的基本要求.本例以mysql为例,首先要使用本例需要添加mysql-connector-java-5.1.7-bin.jar包. ...

  6. 数据库中简单的增删改查(CRUD)

    一切都是基于数据,而对数据的管理都离不开数据库.最近学到数据库的简单操作,所以写下这篇文章,总结一下学习到的知识.浅陋之处,多多见谅. 补充一下:一直弄不清SQL Server,Mysql ,以及Or ...

  7. Maven+SSM框架,实现单表简单的增删改查

    目录 1.创建web Maven项目 2.创建java源码文件和resources资源文件 3.创建数据库配置文件:jdbc.properties 4.项目总体目录: 5.添加spring配置文件:a ...

  8. Hibernate和jsp做数据库单表的增删改查

    虽然很基础,但是我转牛角尖了~~~~这是几个文件 1.最重要的.Java文件 package com.chinasofti.hibb.struts; import org.hibernate.Sess ...

  9. JDBC连接Greenplum数据库,封装了增删改查

    要启动好gp服务,再尝试连接 192.168.94.135是主节点(master)的ip 驱动Jar包在官网获取 嫌麻烦,可以直接用我在网盘分享的Jar包,版本较老 链接:https://pan.ba ...

随机推荐

  1. Android之自定义(上方标题随ViewPager手势慢慢滑动)

    最近很蛋疼,项目要模仿网易新闻的样式去做.上次把仿网易新闻客户端的下拉刷新写出来了,这次是ViewPager的滑动,同时ViewPager的上面标题下划线跟随者移动,本来通过ViewPager的OnP ...

  2. 基于ArcGIS Runtime 100.x 的移动应用程序开发框架 开源

    ArcGIS Runtime作为新一代的轻量GIS应用开发产品,它提供多种API,可以使用Android,iOS,Java,Mac OS X(Objective-C/Swift)..NET,Qt(C+ ...

  3. wxpython wx.windows的API

    wx.Window is the base class for all windows and represents any visible object on screen. All control ...

  4. java生成实体类的工具内部是如何实现的(mysql)

    一.认识INFORMATION_SCHEMA数据库 INFORMATION_SCHEMA数据库提供了访问数据库元数据(数据的数据)的方式 该数据库中存放有数据库名.表名,列名.列的数据类型等各种数据 ...

  5. 【Leetcode】【Easy】Palindrome Number

    Determine whether an integer is a palindrome. Do this without extra space. 判断一个整数是不是回文整数(例12321).不能使 ...

  6. IOS 集成百度地图

    申请key ● http://lbsyun.baidu.com/apiconsole/key 下载SDK ● 下载百度地图开发包:http://api.map.baidu.com/lbsapi/clo ...

  7. python:进程操作

    一.多进程应用 import socket from multiprocessing import Process def talk(conn): conn.send(b'connected') re ...

  8. Wannafly挑战赛1,2

    做了好久了,今天大佬讲题,好厉害,弱鸡只会几道水题. Treepath 给定一棵n个点的树,问其中有多少条长度为偶数的路径.路径的长度为经过的边的条数.x到y与y到x被视为同一条路径.路径的起点与终点 ...

  9. 【luogu P3376 网络最大流】 模板

    题目链接:https://www.luogu.org/problemnew/show/P3376 #include <iostream> #include <cstdio> # ...

  10. pv与单广告位曝光统计优化

    上一篇文章<巧用域名发散,缓解单广告位并发请求限制>中提到了我已经将广告的数据请求写成了单广告位请求.既然数据请求都已经是单广告位的了,那么曝光统计也理所应当是单广告位的. pv是什么? ...