hibernate--CoreAPI_Session
来源:互联网 发布:mac谷歌应用商店打不开 编辑:程序博客网 时间:2024/06/03 23:03
1、save()
2、delete(Object o) ; 要删除必须得有ID值:如:
package com.action;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistryBuilder;import com.bean.Student;import com.bean.StudentPK;public class test2 {public static void main(String[] args) {// TODO Auto-generated method stub SessionFactory sessionFactory = Ancillary.getSessionFactory(); Session session = sessionFactory.getCurrentSession(); Student student = new Student(); student.setId(1); student.setName("王强"); student.setPassword("123456"); session.beginTransaction(); session.save(student); Session session2 = sessionFactory.getCurrentSession(); session2.delete(student); session.getTransaction().commit();}}
3、load(Class theClass, Serializable id) // 重数据库中获取一条记录
Session session2 = sessionFactory.getCurrentSession(); session2.beginTransaction(); Student student2 = (Student)session2.load(Student.class, 1); System.out.println(student2.getName()); session2.getTransaction().commit();以下顺序会报错:
session2.getTransaction().commit(); System.out.println(student2.getName());
4、get(Class theClass, Serializable id)
Session session2 = sessionFactory.getCurrentSession(); session2.beginTransaction(); Student student2 = (Student)session2.get(Student.class, 1); session2.getTransaction().commit(); System.out.println(student2.getName());get()和load的区别:
a、load()得到的时代理对象,等到真正用到对象内容时才会发出sql语句。
b、get()直接从数据库中加载,不会延迟。
c、不存在对应记录时表现不一样。
5、update(Object o)
1)可以更新一个detached状态的实例对象(存在id),更新完成后变成persistent状态
2)不能更新一个transient 状态的实例对象,如果自动设置了id,也同样可以完成更新。
Student student = new Student(); student.setId(1); student.setName("WU"); session.beginTransaction(); session.update(student); // session.save(student); session.getTransaction().commit();3)指定字段不被更新:可在对应字段上设置@Column(updatable=false)
4)设置只更新需要更新的字段
a、XML中 ,在hbm.xml中,在标签class配置 dynamic-update="true" 即可:
session.beginTransaction(); //开启事务 teacher teach = (teacher)session.get(teacher.class, 1); //执行之后变成persistence状态 teach.setTitle("教授"); session.update(teach); //执行数据库添加操作 session.getTransaction().commit(); // 事务提交 System.out.println("the end");在同一session可以达到效果, 不同session则会更新所有字段,不过可以通过merge()来完成同样的效果(了解即可)。
b、通过HQL语句(推荐):
session.beginTransaction(); //开启事务 Query query = session.createQuery("update teacher t set t.title = '博士' where t.id = 1"); // teacher是类名,而不是表名 query.executeUpdate(); session.getTransaction().commit(); // 事务提交 System.out.println("the end");
6、saveOrUpdate()
7、clear()
无论是get()还是load()都会检查缓存中是否存在对象,有则从缓存中取,否则从数据库中取,调用clear()可以强制清除session缓存。
8、flush() 强制缓存和数据库中的内容同步(默认情况下是commit时缓存和数据库中的内容才会同步)
阅读全文
0 0
- hibernate--CoreAPI_Session
- hibernate
- Hibernate
- Hibernate
- Hibernate
- hibernate
- hibernate
- Hibernate
- Hibernate
- Hibernate
- hibernate
- Hibernate
- Hibernate
- hibernate
- hibernate
- hibernate
- Hibernate
- Hibernate
- day04作业
- 在C语言算法中的前置++与后置++
- JavaEE 获取路径
- YOLO: Real-Time Object Detection
- [ 转]放弃MATLAB!简述winpython为什么比MATLAB更方便
- hibernate--CoreAPI_Session
- R入门-001
- python中excel基本操作实例
- 欢迎使用CSDN-markdown编辑器
- 2014年国人开发的最热门的开源软件TOP 100
- Unity3D
- mongodb的c++接口说明
- JQuery ui 简单应用
- 缓存击穿