hibernate——简单的增删改查

hql增删改查 自己总结的代码,里面包括了几种最常用的方法 立即下载

增删改比较简单,查稍微复杂一点。查询有两种方式,一种是通过hql语句和Query接口来实现,一种是条件查询,通过Ctiteria接口来实现,下面举例说明:

UserDao接口:

package com.suo.hibernate.dao;

import java.util.List;

import com.suo.domain.User;

public interface UserDao {
	public void saveUser(User user);
	public User findUserById(int id);
	public List<User> findUserByName(String name);
	public void removeUser(User user);
	public void updateUser(User user);
}
获得session的工具类:

package com.suo.hibernate.util;

import java.io.Serializable;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.suo.domain.User;

public final class HibernateUtil {
	
	private static SessionFactory sessionFactory;
	
	/**
	 * 私有的构造方法,这样就可以防止实例化这个类
	 */
	private HibernateUtil(){}
	
	/**
	 * 因为读取配置文件和映射文件很耗时间,所以这段代码块定义成静态的,那么只加载一次就可以了
	 */
	static{
		Configuration config=new Configuration();
		config.configure();//读取配置文件,默认的是读取hibernate.cfg.xml,若文件名不是这个,也可以以参数形式指定
		sessionFactory=config.buildSessionFactory();
	}

	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
	
	public static Session getSession(){
		return sessionFactory.openSession();
	}
}
对接口的实现类:UserDaoImpl

package com.suo.hibernate.impl;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.suo.domain.User;
import com.suo.hibernate.dao.UserDao;
import com.suo.hibernate.util.HibernateUtil;

public final class UserDaoImpl implements UserDao {

	public void saveUser(User user) {
		Session session=null;
		Transaction transaction=null;
		try{
			session=HibernateUtil.getSession();//获得一个连接
			transaction=session.beginTransaction();//开启一个事务
			session.save(user);
			transaction.commit();
		}catch(HibernateException e){
			if(transaction!=null){
				transaction.rollback();
			}
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.close();
			}
		}
	}

	/**
	 * 通过session的get方法进行查询操作
	 * @param id 通过主键来查询
	 * @return 若存在则返回查询到对象,否则返回空
	 */
	public User findUserById(int id) {
		Session session=null;
		try{
			session=HibernateUtil.getSession();
			
			User user=(User)session.get(User.class, id);
			
			return user;
			
		}catch(HibernateException e){
			e.printStackTrace();
			return null;
		}finally{
			if(session!=null){
				session.close();
			}
		}
	}

	/**
	 * 通过hql语句进行查询操作
	 * @param name 通过name键来进行查询
	 */
	public List<User> findUserByName(String name) {
		Session session=null;
		try{
			session=HibernateUtil.getSession();
			
			String hql="from User as user where user.name=?";
			Query query=session.createQuery(hql);
			query.setString(0, name);
			List<User> list=query.list();
			
			return list;
		}catch(HibernateException e){
			e.printStackTrace();
			return null;
		}finally{
			if(session!=null){
				session.close();
			}
		}
	}

	/**
	 * 删除某个对象
	 */
	public void removeUser(User user) {
		Session session=null;
		Transaction transaction=null;
		try{
			session=HibernateUtil.getSession();//获得一个连接
			transaction=session.beginTransaction();//开启一个事务
			session.delete(user);//这里不太明白,这里的user处于脱管状态,到底是怎么删除的呢?
			transaction.commit();
		}catch(HibernateException e){
			if(transaction!=null){
				transaction.rollback();
			}
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.close();
			}
		}
	}
	/**
	 * 更新某个对象
	 */
	public void updateUser(User user) {
		Session session=null;
		Transaction transaction=null;
		try{
			session=HibernateUtil.getSession();//获得一个连接
			transaction=session.beginTransaction();//开启一个事务
			session.update(user);
			transaction.commit();
		}catch(HibernateException e){
			if(transaction!=null){
				transaction.rollback();
			}
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.close();
			}
		}
	}
	
}

需要注意的是用session中的delete删除一个对象和用update更新一个对象,都是通过id来查找该对象的,通过它执行的sql语句可以知道,所以,在删除一个对象时,首先要new一个user,然后指明id,才会正确的删除和更新,此外,更新操作的sql语句是更新所有的除id之外的属性,所以,对于更新,除了要指明id之外,还要设置各个属性值,否则会全部置为默认值。


hibernate增删改查和动态sql 这里是hibernate增删查改和采用freemarker实现动态sql,hql 立即下载

相关推荐

hql的增删改查

总结的hql的语句的常用的增删改查,自己留着看的

HQL增删改查

一  增加 getSession().save(entity) 二  删除 1 String hql = " DELETE FROM Student dm WHERE  dm.id = ? "; this.delete(hql,stu.getId()); 2 Transaction trans=session.beginTransaction();    String

aliushui的专栏 1379

hibernate增删改查

hibernate的增删改查代码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

Hibernate增删查改操作【HQL】

前提:所有sql语句中的表名统统在hql中换成实体类名! 一、HQL //1.查询所有(格式与sql差别): from Student //2.部分查询: select name,age from Student //3.条件查询(别名): from Student a where a.city = '上海' select a.name,a.age from Studen...

@木南山牙的博客 645

Hibernate中Session增删改查操作代码详解

主要介绍了Hibernate中Session增删改查操作代码详解,具有一定借鉴价值,需要的朋友可以参考下。

软考中级-系统集成项目管理工程师**的超详细知识点笔记。

软考中级系统集成项目管理工程师核心知识点摘要 综合知识:涵盖信息化基础(国家信息化六要素、信息系统开发方法)、系统集成特点(高技术性、团队协作)、IT服务管理(ITIL流程)、网络技术(OSI模型、TCP/IP)、信息安全(CIA三要素、加密技术)、软件工程(生命周期、测试类型)、面向对象分析与设计(UML图)、新一代信息技术(云计算、大数据、物联网)。 案例分析:聚焦项目管理十大知识领域,重点包括: 整体管理(项目章程、变更控制流程) 范围管理(WBS分解、需求跟踪矩阵) 进度管理

最爱で毛毛熊的博客 1990

hibernate的基本增删改查

hibernate的基本的增删改查 将之前的相同部分代码分装成一个类 HibernateUtil.java package util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { //声明一个私有的静态final类型的Configuration对象 private s

林深不见鹿 2829

小红书私信接口与Hook技术实战:微信跳转卡片的合规与破解之道

本文深入探讨了小红书私信接口与Hook技术的实战应用,重点解析了微信跳转卡片的合规使用与破解方法。通过官方私信接口的合规玩法与Xposed框架的Hook技术对比,为开发者提供了技术选型指南和实战建议,帮助实现高效的用户跳转与转化。

weixin_30399821的博客 737

hql语句基础的增删改查

hql语句基础的增删改查

银色木马的博客 813

SAP成本控制范围配置全流程:从货币参数到标准层次(附2024最新SPRO路径)

本文详细拆解了SAP成本控制范围(Controlling Area)的完整配置流程,涵盖从货币与估价参数文件定义、参数文件分配到控制范围,再到成本中心标准层次创建等核心步骤。文章提供了2024年最新的SPRO导航路径和实战配置要点,帮助顾问构建稳健、可扩展的管理会计基础架构,并附有常见问题排查指南。

java5的博客 940

ROS新手必看:5分钟搞定URDF小车建模(附Rviz可视化调试技巧)

本文为ROS新手提供了快速构建URDF机器人模型的实战指南。通过一个完整的两轮差速小车建模案例,详细解析了URDF的核心语法、Rviz可视化调试技巧以及常见问题排查方法,帮助初学者快速掌握ROS机器人建模与可视化调试的核心技能。

weixin_29079643的博客 250

HQL实现简单的增删改查

HQL(Hibernate Query Language)是完全面对对象的查询语句,查询功能强大,具备继承、多态和关联等特性。 Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL语句。 hibernate5中 org.hibernate.Query 被 org.hibernate.query.Query 替代。 创建dao层接口...

李天下 1442

图像做旧算法原理及代码解释

该图像做旧算法主要通过一系列的图像处理操作来模拟旧照片的效果。整体流程包括:首先对输入图像进行颜色调整,降低饱和度并增加黄色调以营造出旧照片的色彩风格;接着添加高斯噪声来模拟旧照片可能存在的颗粒感;最后通过在图像上随机绘制线条来模拟旧照片的划痕和瑕疵。综上所述,该图像做旧算法通过对颜色的调整(包括饱和度降低、色相偏移)、添加高斯噪声以及模拟划痕和瑕疵等一系列操作,从多个方面模拟了旧照片的特征。

m0_44975814的博客 901

一个简单的利用hibernate实现增删改查的例子

下面这个例子非常简单,只是用于实现一个对oracle数据库中student表的一个简单的增删改查,其中查询和删除都是根据主键id来查询。 目录结构 图1:目录结构 hibernate.cfg.xml中的代码如下: oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@localhost:1521:orcl yedward

山鹰的专栏 8841

详细分析 Bladex中的swagger-resources资源未授权访问的解决方法

有如下方式,网关过滤、去除配置以及修改代码还有隐藏彩蛋(附Demo),推荐阅读

码农研究僧的博客 1727

【C2000系列DSP的Bootloader详解】实现过程、流程图与示例代码

C2000 Bootloader 的核心逻辑可概括为 “初始化→选模式→加载程序→校验→跳转” 五步。对于小白来说,无需纠结底层寄存器配置(驱动库已封装),重点理解 “启动流程” 和 “数据传输 + 校验” 的核心思想即可。 通过本文的流程图和示例代码,相信你已经掌握了 C2000 Bootloader 的核心原理。实际开发中,可基于 TI 提供的 Bootloader 示例(C2000Ware 中自带)进行修改,快速适配自己的硬件和应用场景。

昔时扬尘处 375

Hibernate 简单的增删改查 示例

创建数据库ssh下的一张表box:   create table `ssh`.`box`( `id` INT not null auto_increment, `width` FLOAT, `length` FLOAT, `height` FLOAT, `name` VARCHAR(20), primary

itzyjr的专栏 1069

大数据知识面试题-Hadoop(2022版)

序列号 内容 链接 1 大数据知识面试题-通用(2022版) 待续… 2 大数据知识面试题-Hadoop(2022版) 待续… 3 大数据知识面试题-MapReduce和yarn(2022版) 待续… 4 大数据知识面试题-Zookeepr (2022版) 待续… 5 大数据知识面试题-Hive (2022版) 待续… 6 大数据知识面试题-Flume(2022版) 待续… 7 大数据知识面试题-Hbase(2022版) 待续… 8 大数据知识面试题-sqoop(....

拉格朗日的学习笔记 1万+

Hibernate简单实现增删改查

Hibernate简单实现增删改查 2020.08.10 用了一下午时间入门了Hibernate给和我一样想学的小白分享一下 hibernate是一个对象关系映射框架 它对jdbc进行了封装只需要调用方法即可实现对数据库的操作。hibernate可以自动生成SQL语句,自动执行。 **直接上代码** 1. 创建新项目勾选web Application和Hibernate以及hibernate下面Create default hibernate configuration and main class点击N

wgy_BUG的博客 4852

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

hibernate之简单增删改查

hibernate之简单增删改查一、主体框架二、代码展示①News实体类②hibernate.cfg.xml配置文件③News.hbm.xml配置文件④AppTest测试类代码三、运行结果展示 一、主体框架 二、代码展示 ①News实体类 package com.allen.entity; import java.io.Serializable; public class News implements Serializable { private Integer id; privat

faramita_of_mine的博客 679

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

hibernate中简单的增删改查

项目的整体结构如下 1.配置文件 hibernate.cfg.xml <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configurati...

weixin_30278311的博客 103

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

1、创建表//根据实体类创建表字段2、创建java project项目//这个不多说3、添加对应jar包//这个也不多说4、创建数据库表实体类package com.entity; /** * 数据库实体 * Created by lvjun on 2018-03-26. */ public class UsersEntity { int id;//用户id String ...

lvjunit 1万+

Java-Hibernate简单增删改查

Hibernate 简单增删改查 转载自 https://www.shiyanlou.com/courses/document/971 一、实验环境说明1. 环境登录无需密码自动登录,系统用户名 shiyanlou,密码 shiyanlou2. 环境介绍本实验环境采用带桌面的 Ubuntu Linux 环境,实验中可能会用到桌面上的程序:> * XfceTerminal: Linux 命令行终

SoftStar的专栏 681

Hibernate实现简单的增删改查

现在Hibernate使用的是越来越少了,但是Hibernate任然是一个非常棒的框架 今天用Hibernate实现简单的增删改查 配置文件 Hibernate的配置文件主要有两个,一个是hibernate.cfg.xml .默认放在src下(也可以放在其他位置,但是要在加载配置文件时填写路径信息).另一个(种)是 mappername.hbm.xml .mappername是你实体类...

yan245294305的博客 631

Hibernate简单增删改查

一、准备工作 1.建立数据库think,建立数据表user,里面有name和pwd字段,均为varchar类型。 2.在eclipse中创建MyFirstHibernate工程,在bin目录下添加相关包。 3.在src目录下编写*.cfg.xml配置文件, hibernate.cfg.xml: <!DOCTYPE hibernate-configuration PUBLIC "-//H

w_t_y_y的博客 278
上一篇: hibernate——Session接口中定义的saveOrUpdate()方法浅析
下一篇: hibernate——两种查询方式
hackerain
博客等级 码龄16年 753粉丝 220原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值