Hibernate 增删改查
来源:互联网 发布:mac口红干嘛 编辑:程序博客网 时间:2024/05/16 01:10
准备
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语句,见下面的例子:
从数据库中删除实体。需要实体为持久化状态。
也可以执行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()方法就会自动同步到数据库中。
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次查询。
1 0
- hibernate增删查改
- hibernate增删改查
- Hibernate增删改查
- hibernate 增删改查
- hibernate 增删改查
- Hibernate 增删改查
- Hibernate增删改查
- hibernate 增删改查
- Hibernate增删改查
- Hibernate增删改查
- hibernate增删改查
- Hibernate--增删改查
- Hibernate--增删改查
- Hibernate-增删改查
- hibernate增删查改
- Hibernate增删改查
- hibernate增删改查
- hibernate中的增删改查
- IO流(2)
- Html5学习之Form
- 桥梁结构的ANSYS参数化分析
- php 正则表达式匹配 斜杠问题
- dom4j中xml解析的一些常用方法
- Hibernate 增删改查
- 使用 Cocos2d-x 和粒子编辑器实现“天天爱消除”场景特效
- 反射
- find_text_dongle.hdev相关例程学习
- Linxu 压缩与解压缩
- Spring框架详解
- 内省和注解
- volatile在多线程中的使用
- 图像处理------Mean Shift滤波(边缘保留的低通滤波)