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增删改查操作代码详解,具有一定借鉴价值,需要的朋友可以参考下。

银河飞腾FT6678实战指南:OpenMP多核并行编程优化技巧

本文详细介绍了在银河飞腾FT6678多核处理器上使用OpenMP进行并行编程的实战技巧与优化方法。从基础语法到环境配置,再到性能优化的五大核心技巧,包括循环并行化、并行粒度控制、reduction子句使用等,帮助开发者充分发挥FT6678的8核计算能力。通过实际案例展示如何将图像处理算法从200ms优化到28ms,并深入探讨了任务调度、内存访问优化等进阶主题。

weixin_29234423的博客 287

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

LAN8720芯片硬件设计避坑指南:从晶振选择到PHY地址配置的5个关键细节

本文深入解析LAN8720以太网PHY芯片硬件设计的五个关键细节,涵盖晶振模式选择、PHY地址配置、复位电路设计、电源滤波与接口布线。重点阐述了REF_CLK Out与REF_CLK In两种时钟模式的配置逻辑与应用场景,提供了避免通信失败与信号完整性问题的实战方案,是嵌入式网络硬件开发的实用避坑指南。

i1j2k的博客 514

hql语句基础的增删改查

hql语句基础的增删改查

银色木马的博客 813

KF-gins输出结果绘图

KF-gins输出结果绘图

m0_51977577的博客 1107

Altium Designer(AD)PCB拼版——两种方法教程

本文详细介绍了PCB拼版的设计要点与操作方法。主要内容包括:拼版目的(解决小尺寸夹持问题、提高利用率、降低成本)和三大连接方式(V-CUT、邮票孔、空心连接条)的特点与参数设置;工艺边设计规范(宽度、定位孔、Mark点等要求);拼版尺寸限制与常见错误检查;以及两种具体拼版操作方法(特殊粘贴和拼版阵列),并附有工艺边、定位孔、Mark点的绘制步骤示意图。同时提供了硬件工程师笔试面试相关资源链接。全文系统阐述了PCB拼版的核心技术和操作流程,为电子设计人员提供了实用指导。

XU157303764的博客 7603

HQL实现简单的增删改查

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

李天下 1442

TMF8801 ToF激光测距传感器原理图设计,已量产(距离传感器)

这张 TMF8801 小板的外围结构就很有代表性。核心传感器是 U1 TMF8801,但真正构成量产价值的是外围那一圈:U2 把 VCC 整理成 3V,R1/R2/R5 与 R3/R4/R6 两组 10K 电阻稳定默认态,Q2 2N7002 和 U3 SN74LVC2G07DCKR 处理控制链路,传感器边上还有 C1/C4/C5 三颗 100nF 紧贴去耦。

不脱发的程序猿 159

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

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

山鹰的专栏 8841

手把手教你学Simulink--电机控制架构与算法实现​场景示例:基于Simulink的电机速度环PID调节仿真

本文带你完成了电机速度环PID参数的科学整定,实现了:✅ 理解了速度环的级联系统特性与关键参数影响工程整定法(理论初值)系统辨识法(参数未知时)✅ PID Tuner自动调参(推荐!自动调参兼具快速性与鲁棒性✅ 学会了前馈补偿抗饱和等工程实用技巧。

MHD0815的博客 653

华为OD机考2025C卷 - 精准核酸检测(Java & Python& JS & C++ & C语言)

华为OD机考2025C卷 - 精准核酸检测,提供在线OJ Java & Python& JS & C++ & C

算法大师! 2882

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

《UDS协议从入门到精通》系列——到底什么是DTC?

到底什么是DTC?看这里,深度图解DTC格式,详述DTC状态位、快照信息和扩展信息!!

车载系统攻城狮 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

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Camera2Demo

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

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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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、付费专栏及课程。

余额充值