Hibernate 增删改查

简介: 准备 Hibernate持久化对象支持三种对象状态。 瞬态:内存中的没有与Session关联的对象。 持久化:与Session关联的对象,对它所做的操作会自动同步到数据库中。 托管:以前与Session关联过,但Session又关闭了。 增 Serializable org.hibernate.Session.save(Object object) 新增一行。返回生成的主键,

准备

Hibernate持久化对象支持三种对象状态。

瞬态:内存中的没有与Session关联的对象。

持久化:与Session关联的对象,对它所做的操作会自动同步到数据库中。

托管:以前与Session关联过,但Session又关闭了。

Serializable org.hibernate.Session. save(Object object)
新增一行。返回生成的主键,因此需要立即执行。通常这样用: 
int id=(int) sess.save(pojo);
void org.hibernate.Session. persist(Object object)
新增一行。延迟执行。此外与save()方法没有区别。
批量增加时可以用下面的代码:
public static void writeToTable(Set<OrderCheckPojo> set) {
		long beginTime = System.currentTimeMillis();
		Session sess = DaoUtil.sf.openSession();
		Transaction tr = sess.beginTransaction();
		int id;
		int i = 0;
		for (OrderCheckPojo pojo : set) {
			if (i++ % 100 == 0) { // 每100条刷新并写入数据库
				sess.flush();
				sess.clear();
			}
			id = (int) sess.save(pojo);
		}
		tr.commit();
		sess.close();
		logger.info("bufferSet.size():" + set.size() + ".And store them cost "
				+ (System.currentTimeMillis() - beginTime) + " milliseconds。");
	}

void org.hibernate.Session. delete(Object object)
从数据库中删除实体。需要实体为持久化状态。
也可以执行hql语句,见下面的例子:
Session sess=DaoBase.sf.openSession();
Transaction ts=sess.beginTransaction();
//注意executeUpdate()函数
int n=sess.createQuery("delete CounterPojo as t where t.source='online'").executeUpdate();
System.out.println("deleted rows:"+n);
ts.commit();
sess.close();

通过主键得到持久化对象
Object org.hibernate.Session. get(Class clazz, Serializable id)
根据指定的id返回数据库中的一行。若不存在返回null。立即执行。
Object org.hibernate.Session. load(Class theClass, Serializable id)
根据指定的id返回数据库中的一行。若不存在会抛异常。延迟执行。
通过get()或load()方法得到的就是持久化对象,对它们调用setter()方法就会 自动同步到数据库中。

通过where条件得到持久化对象
如hql="update Student as t set name='Tom' where t.name='tom' ";

hql代表hibernate查询语句,与sql相比,没有了最开始的select XXX ,得到的总是完整的对象。

hql="from Student"或hql="from Student as s"
等价于"select * from Student"
hql="from Student as s where s.name like 'tom%'"
等价于"select * from Student as s where s.name like 'tom%'"
hql="from Student as s order by s.name ASC,s.age DESC"
等价于"select * from Student as s order by s.name ASC,s.age DESC"
in 查询

批量where查询可用in查询来提升效率,为了不让一次查询花费太多时间,可以批量in 查询。

比如我想做10000次查询,就可以每100个放到 in (set)后面的集合中,执行100次查询。

目录
相关文章
|
5月前
|
Java 数据库连接 Maven
SpringMvc 之crud增删改查应用
SpringMvc 之crud增删改查应用
43 0
|
6月前
|
SQL
SpringMVC系列(三)之CRUD增删改查
SpringMVC系列(三)之CRUD增删改查
|
6月前
|
前端开发 Java 数据库连接
SpringMVC增删改查(CRUD)的实现
SpringMVC增删改查(CRUD)的实现
19 0
|
6月前
|
设计模式 前端开发 Java
SpringMVC的整合完成CRUD(增删改查)
SpringMVC的整合完成CRUD(增删改查)
21 0
|
8月前
|
Java 关系型数据库 数据库连接
MyBatis增删改查(CRUD)操作
CRUD操作指的就是增加(Create)、读取(Retrieve)、更新(Update)、删除(Delete)这四种基本数据库操作; MyBatis提供了一种简洁且灵活的方式来执行这些操作,通过配置映射文件和编写对应的SQL语句,将Java对象与数据库表进行映射和操作。 准备任务 首先,你需要在你的项目中添加MyBatis的依赖等; 创建数据库连接idea, 接下来,你需要创建一个MyBatis的配置文件(通常是一个XML文件); 注意:com.mysql.cj.jdbc.Driver是从MySQL Connector/J版本8.0开始引入的。在此版本之前,MySQL Connector/J使
88 1
|
Java 数据库连接 数据库
Mybatis-Plus学习(一):实现增删改查CRUD
Mybatis-Plus学习(一):实现增删改查CRUD
163 0
Mybatis-Plus学习(一):实现增删改查CRUD
|
SQL XML Java
MyBatis的增删改查操作
这篇文章,我们就来完成MyBatis的增删改查操作,体会高级框架带来的灵活与简便。
148 0
MyBatis的增删改查操作
|
SQL Java 数据库连接
MyBatis-Plus(三、增删改查)
通过继承BaseMapper就可以获取到各种各样的单表CRUD操作,史上最全的mybatis-plus通用增删改查操作,面向零基础。
264 0
MyBatis-Plus(三、增删改查)
|
SQL Java 数据库连接
Mybatis增删改查操作
Mybatis增删改查操作
107 0
Mybatis增删改查操作