Hibernate之单张表的增,删,改,查以及批量操作

菜鸟学习Hibernate——简单的增、删、改、查操作 上篇博客利用Hibernate搭建起一个简单的例子,把数据库的映射显示了出来在上一篇的博客基础上这篇博客讲述如何利用Hinbernate框架实现简单的数据库操作。 1、加入junit.jar 2、新建一个工具类HibernateUtils.Java把一些对session的公共操作封装起来 import org.hibernate.Session; import org.hibernate.S 阅读详情

一.hibernate步骤

1.六个准备(三拷三配):

  • 拷jdbc驱动
  • 拷hibernate开发包
  • 拷 log4j
  • 配pojo(以一张学生表为例,数据库中两个字段。注意:要实现序列化)
public class Student  implements Serializable {
    private int sid;
    private String sname;
    //...setters和getters方法已省略   
}
  • 配映射文件
column :是数据库里面的字段,name: 是pojo的字段;不相同就得都写,名字相同可以省略
<hibernate-mapping>
    <class name="com.pojo.Student" table="stu">
        <id name="sid" column="id">
            <generator class="identity"/>
        </id>
        <property name="sname" column="name"/>
    </class>
</hibernate-mapping>
  • 配总的配置文件
 <hibernate-configuration>
    <session-factory>
        <property name="myeclipse.connection.profile">MySQL5</property>
        <property name="connection.url">jdbc:mysql://127.0.0.1:3306/s38</property>
        <property name="connection.username">root</property>
        <property name="connection.password">admin</property>
        <property name="connection.driver_class">
        com.mysql.jdbc.Driver
        </property>
        <property name="dialect">
        org.hibernate.dialect.MySQLDialect
        </property>
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <mapping resource="com/pojo/Student.hbm.xml" />
    </session-factory>
 </hibernate-configuration>

2.七个步骤(上一篇博文写了)

由于进行持久化操作的时候,多次用到了session,所有我们可以把得到session分装成一个公共的方法。

如下:

public class HibernateSessionFactory {
    private static Configuration cfg=new Configuration().configure();
    private static SessionFactory factory=cfg.buildSessionFactory();
    private static Map<Thread, Session> map = new HashMap();

    public static Session getSession()
    {
        Session session = map.get(Thread.currentThread());
        if (session==null || session.isOpen()==false)
        {
            session = factory.openSession();
            map.put(Thread.currentThread(), session);
        }

        return session;

    }
}

3.添加学生表的记录

**单个操作以主键为核心:
session.get() 找 ;
session.get() 添加 ;
session.delete() 删除 ;
session.update() 改

public class AddStu {

    /**
     * @param Anges
     * 添加学生表的记录
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Transaction tr=session.beginTransaction();
        Student stu=new Student();
        stu.setSname("lili");
        session.save(stu);
        tr.commit();
        session.close();
    }
}

4.根据主键查找学生

public class FindStu {

    /**
     * @param Anges
     * 根据主键查找学生
     * 可以不用事务
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Student stu=(Student) session.get(Student.class, 1);
        if(stu==null){
            Logger.getRootLogger().info("查无此人");
        }else{
            Logger.getRootLogger().info(stu.getSname());
        }
    }

}

5.修改

public class UpdateStu {

    /**
     * @param Anges
     * 先查到学生然后再修改
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Student stu=(Student) session.get(Student.class, 1);
        if(stu==null){
            Logger.getRootLogger().info("查无此人");
        }else{
            Transaction tr=session.beginTransaction();
            stu.setSname("luoli");
            session.update(stu);
            tr.commit();
            Logger.getRootLogger().info(stu.getSname());
        }
        session.close();
    }
}

6.删除

public class DeleteStu {

    /**
     * @param Anges
     * 先查到学生然后再删除
         */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Student stu=(Student) session.get(Student.class, 1);
        if(stu==null){
            Logger.getRootLogger().info("查无此人");
        }else{
            Transaction tr=session.beginTransaction();
            session.delete(stu);
            tr.commit();
        }
        session.close();
    }

}

7.

public class QueryFindStu {
    /**
     * @param Anges
     * 批量查找
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        String hql="from Student";  //在hql中: 表名改成类名  ,字段名改成属性名
        Query query=session.createQuery(hql);
        List<Student> list=query.list();
        for (Student stu : list) {
            System.out.println(stu.getSid()+"\t"+stu.getSname());
        }

    }
}
海康摄像头RTSP流延迟优化实战:从VLC到OpenCV的5种方案对比与性能调优 本文针对海康摄像头RTSP流的高延迟问题,深入剖析了延迟根源,并系统对比了从VLC、OpenCV到海康官方SDK、FFmpeg及硬件加速等五种主流方案的性能表现。重点分享了缓冲区设置、协议优化、多线程架构与硬件解码等实战调优技巧,旨在帮助开发者将视频流延迟从秒级优化至毫秒级,满足工业检测、安防监控等高实时性场景需求。 阅读详情

相关推荐

【附源码】Node.js毕业设计高校院级校友信息管理系统(Express)

首先,该系统可以提高高校对校友信息管理的效率和准确性。通过系统提供的查询功能,高校可以方便地获取校友的最新联系方式和动态,及时了解校友的发展情况,为校友提供更好的服务和支持。总之,开发高校院级校友信息管理系统将为高校提供一个高效、便捷的工具,有助于提升校友管理水平和服务质量,促进高校与校友之间的良好互动关系。通过使用前端技术HTML、CSS、JavaScript和Vue框架,结合后端技术Node.js和Express框架,以及MySQL数据库,可以实现对校友信息的快速录入、查询、修改和删除等操作。

佳愉毕设源码 891

使用Hibernate(JPA)一键式删除

在旧版本的Hibernate中,我可以看到手册中指示的一键式删除 。 但是较新的版本不再包含此部分。 我不知道为什么。 因此,在这篇文章中,我来看看它是否仍然有效。 一键式删除部分显示: 有时一个接一个地删除收集元素可能效率极低。 对于新的空集合(例如,如果您调用list.clear() ,Hibernate不会这样做。 在这种情况下,Hibernate将发出一个DELETE 。 ...

最佳 Java 编程 458

搞定8GB/s数据流:一个FPGA工程师的XDMA驱动调优实战(附避坑清单)

本文详细记录了FPGA工程师在XDMA驱动调优过程中实现8GB/s高带宽数据流的实战经验。通过优化DDR访问、中断响应、DMA映射等关键环节,解决了PCIE数据采集卡在高带宽场景下的性能瓶颈,并提供了实用的避坑清单和技术方案。

weixin_29194255的博客 201

hibernate删除数据

我这里用到的是把一张表里的数据都删除 //创建一个事务 //根据hibernate配置文件的配置信息,创建一个configuration实例 Configuration configuration = new Configuration().configure(); //创建SessionFactory实例 SessionFact...

青苔小榭 5677

高速电路的信号完整性分析

摘要:介绍了高速PCB设计中的信号完整性概念以及破坏信号完整性的原因,从理论和计算的层面上分析了高速电路设计中反射和串扰的形成原因,并介绍了IBIS仿真。 关键词:信号完整性 反射 串扰 IBIS仿真 随着半导体技术和深压微米工艺的不断发展,IC的开关速度目前已经从几十MHz增加到几百MHz,甚至达到几GHz。在高速PCB设计中,工程师经常会碰到误触发、阻尼振荡、过冲、欠冲、串...

bh_wang的专栏 1429

LDRA Testbed软件静态分析_常见问题及处理

通过前面的几篇文章,LDRA Testbed软件静态分析的内容基本讲解完了,本篇文章将针对使用Testbed进行软件静态分析的常见问题进行介绍。 到此为止,LDRA Testbed软件静态分析的内容已经全部讲完,如果有问题,欢迎私信提问(不经常登录,回复可能不及时,见谅)。下一篇文章将开始讲解如何使用Testbed进行单元测试。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 2585

Hibernate 删除主表记录并删除副表记录解决方法

公司的OA。采用SSH(Spring+Struts1.0+Hibernate) 小弟接触Hibernate不久,写的文章难免有些地方欠妥,如有不对之处,请给我留言或用QQ(941867223)联系我及时更改,以免误导别人。谢谢!数据库表字段太多了,暂时不贴出来了,如有需求者用QQ联系我发到邮箱就行了:我要删除员工记录功能Employee.hbm.xml配置文件如下:

xiangsuixinsheng的专栏 5006

C#与大数据分析:如何通过上位机进行设备故障诊断与预测

设备故障诊断是通过对设备的运行状态数据进行分析,识别和确认故障的类型和位置。而设备故障预测则是通过对设备的历史数据和运行状态进行分析,预测设备何时可能出现故障,从而进行预防性维护。数据采集:通过各种传感器、PLC、嵌入式设备等采集设备运行数据,如温度、压力、振动、转速、功率等。数据预处理:对采集到的数据进行清洗、去噪、缺失值处理、标准化等操作,以确保数据质量。特征工程:从原始数据中提取出有助于故障诊断和预测的特征,例如统计特征、时域特征、频域特征等。数据分析与建模。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1060

hibernate中对单表的增、删、该、查

hibernate中对单表的增、删、该、查 增 //相当于打开连接池 Sesssion session = HibernateUtil.openSession(); //创建一个对象 Customer customer = new Customer(); //向对象中添加数据 customer.setCust_name("name1"); //保存 session.save(customer);...

weixin_43478300的博客 177

Unity中实现俄罗斯方块

二:实现思路 ——创建每一个方块可移动到的位置点,可以理解为创建一个游戏地图,从(0,0)点开始依次向x轴和y轴延伸,例如x最大为9,y最大为19,则创建了一个20行10列的地图 ——制作每一个形状的预制体,Shape是每一个整体形状,Block是每一块小方块,CenterPos代表这个形状的旋转中心 ——创建GameController脚本控制游戏逻辑,挂载到面板物体上。创建Block脚本控制每个形状的操作,挂载到每个形状上 ——在GameController脚本中编...

L的博客 8557

Android 13.0 app进程保活白名单功能实现

在13.0的系统rom产品开发中,在某些重要的app即使进入后台,产品需求要求也不想被系统杀掉进程,需要app长时间保活,就是app进程保活白名单功能的实现, 所以需要在系统杀进程的时候不杀掉白名单的进程,接下来就看怎么样来实现这些功能

安卓兼职framework和app工程师的博客 3141

不同于hibernate,利用通用持久类实现数据增、删、改、查,可极大提高开发效率

DAO类+通用持久类,实现数据增、删、改、查 标题中“DAO类”指net.newxy.dbm.BaseDAO或其子类,“通用持久类”指net.newxy.dbm.DynaDto。利用newxy(新坐标)DAO类及通用持久类对数据进行增、删、改操作可以不依赖于struts,运用系统不一定要支持struts,方法极其简便。一、通用持久类简介:1.net.newxy.dbm.Dy

nlhlx的专栏 3565

YOLOv8 改进涨点 | 模块即插即用 直接可用

在目标检测任务中,注意力机制能够帮助模型聚焦于图像中的关键区域,显著提升检测精度。。创建模块代码注册模块修改任务解析tasks.py创建YAML配置文件模块核心优势适用场景计算开销SOCA捕获二阶统计信息,增强通道间相关性需要精细特征区分的场景中等SK自适应多尺度核选择多尺度目标检测中等偏高显式特征聚集-分配机制全局上下文建模中等A2-Net双线性注意力,高效全局交互复杂场景理解中等偏高CrissCross线性复杂度全局上下文高分辨率输入,长距离依赖较低。

u012133341的博客 2256

Hibernate实现记录的增、删、改和查功能

本节讲述如何使用Hibernate实现记录的增、删、改和查功能。 1 查询        在Hibernate中使用查询时,一般使用Hql查询语句。 HQL(Hibernate Query Language),即Hibernate的查询语言跟SQL非常相像。不过HQL与SQL的最根本的区别,就是它是面向对象的。 使用HQL时需要注意以下几点: l         大小写敏感 因为HQL是面向对象的...

spring028的专栏 187

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Hibernate--Hibernate增、删、改、查--day02-1

Hibernate增、删、改、查根据主键查询使用session的get()查询使用session的load()查询使用HQL查询简单查询查询单个记录查询所有记录HQL查询语句属性查询实例化查询高级查询查询语句参数绑定按参数位置绑定按参数名称绑定绑定各种类型的参数setProperties()方法 根据主键查询 使用session的get()查询 类加载 Emp emp=session.get(Em...

a1773570500的博客 331

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

使用Hibernate实现简单的增、改、删、查操作

作为Hibernate的初学者,要真正的掌握Hibernate,从简单的增、改、删、查开始。 1.增加(save或persist) 这两个方法都能实现数据的添加,主要区别在于:在没有开启事物时,save( )会执行相关的sql语句,然后在回滚,而persist根本不会执行sql语句。所以这两个方法都要在事物中才能生效。 示例代码: 1 Configuration...

anguizheng9892的博客 185

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Hibernate_2_增、删、改、查的模板:

增、删、改、查的模板: // 调用封装类 生成一个session Session session = HibernateUtils.getSession(); Transaction tx = null;// 声明一个事物 try { tx = session.beginTransaction();// 开始事务 /** *放置

阿_顺u012963457的专栏 753

MyBatis 基于注解的增、删、改、查操作

MyBatis 基于注解的增、删、改、查操作 程序清单:UserMapper.java package com.mapper; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Option...

2893

Hibernate 基本增查改删

– Start 我们已经学会了如何将表和对象映射起来,下面我们通过例子来看看如何进行基本的增查改删。 package shangbo.hibernate.demo027; public class App { public static void main(String[] args) throws Exception { try (DataService dataService = ne...

千里之行始于足下 222

hibernate增、删、改、查案例

1、hibernate根据主键查询数据 get和load方法 搭建好hibernate环境,测试通过后,直接编写dao、此处省略了service和controller,需要大家自己编写代码补上spring+springmvc+hibernate环境搭建 @Override public Admin selectById(Admin param) { Sess

sky274548769的博客 496

Hibernate常见操作(增、删、改)

Hibernate常见操作        如果利用Hibernate修改数据库时,需要使用事务处理,一个事务提交时才真正将修改过的记录更新到数据库中。 1、增加记录 Session session=HibernateSessionFactory.getSession(); /*定义事务开始*/ Transaction tran=session.beginTransaction

~~~~~~~~~~~~ 7775

Hibernate 抽取工具类 实现简单的增、删、改、查操作

一、HibernateUtils.class public class HibernateUtils { public static final Configuration cfg; public static final SessionFactory sf; static{ cfg = new Configuration().configure(); sf = cfg.bu...

你的调料包 217

如何在代码中编写SQL语句进行增、删、改、查操作?

在代码中使用SQL语句进行增、删、改、查操作的具体方式取决于你使用的编程语言和数据库系统。下面是一些常见编程语言和数据库系统的示例:

m0_47946173的博客 1161

hibernate增、删、改、查(CRUD)

需要注意的地方: 删除和修改操作都要指定对象的id,即主键,经过我的测试,如果不指定对象的主键, 删除和修改操作都是不成功的。 ------------------------------------------------------------------------------------------------------------------------------- 注:我测

friendan的专栏 1503
上一篇: Hibernate的基本工作流程
下一篇: Hibernate遇到的几个常见映射异常
月璇之音
博客等级 码龄12年 27粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值