JPA 常用操作 与 Hibernate 的区别
来源:互联网 发布:最近破获网络涉枪案件 编辑:程序博客网 时间:2024/06/06 01:52
前提:
// ########### 原 Hibernate 写法 ###############//Configuration conf = new Configuration();//SessionFactory sf = conf.configure().buildSessionFactory();//Session s = sf.openSession();//Transaction tx = s.beginTransaction();//s.save(null);//tx.commit();//s.close();// ############# JPA 写法 #############//创建实体管理器工厂 === 相当于 sessionFactoryEntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa");//创建实体管理器 === 相当于sessionEntityManager em = emf.createEntityManager();//通过实体管理器获得事务对象EntityTransaction tx = em.getTransaction();tx.begin();Customer c = new Customer();c.setName("toma");em.persist(c);tx.commit();em.close();
1.查找
em.find(Customer.class,1) 与 s.get(Customer.class,1) 一致,
先查缓存,再查数据库,数据库无则返回null.......不会主动产生代理,亦即不能实现延迟加载。
但若,先前缓存有代理对象,该方法也会优先返回代理对象。
em.getReference(Customer.class, 1) 与 s.load(Customer.class,1) 一致,
先查缓存,再查数据库,数据库无则抛异常.....该方法会在缓存产生代理对象。
查询所有
Query q = em.createQuery("select c from Customer c");
q.getResultList();
2.更新
①更新持久对象:查找出来即为持久态,直接修改即可。
②更新游离对象:
c = em.merge(c),该方法类似 s.saveOrUpdate
区别:
1. merge 缓存的是实体对象的副本,即将副本变为持久化对象,该方法返回副本。
saveOrUpdate 直接缓存 实体对象,无返回。
2.实体对象无id:两个方法都是插入。
3.实体对象有id 且 该id在数据库中存在:两个方法都更新。
4.实体对象有id 但 该id在数据库中不存在:merge 插入,但id被重置为表中序列下一值。saveOrUpdate 抛异常。
3.插入
em.persist,该方法与 s.save 类似
区别:
persist : 实体对象带有id,报错。
save :无视实体对象的id。
4.删除
em.remove(em.merge(c)), remove 只能删除持久化对象。
而 s.delete(c),则可删除游离对象。
Query q = em.createQuery("delete from Customer c where id >2");
q.executeUpdate();
- JPA 常用操作 与 Hibernate 的区别
- JPA与Hibernate的区别
- Hibernate与JPA的区别是什么
- Native Hibernate与Hibernate JPA实现的区别及其分析
- JPA和Hibernate的区别
- JPA和Hibernate的区别
- JPA和Hibernate的区别
- JPA和Hibernate的区别
- JPA和Hibernate的区别
- JPA和Hibernate的区别
- 常识-Hibernate与JPA常用注解
- JPA的几个常用操作
- JPA与Hibernate的优缺点
- jpa与hibernate的关系
- JPA与Hibernate的优缺点
- JPA与Hibernate的关系
- JPA与Hibernate的优缺点
- JPA与Hibernate的关系
- Android TextView 高级应用
- oracle goldengate 参数学习 GETUPDATEBEFORES
- 黑马程序员-关于线程继承Thread和Runnable的对比
- 最长上升子序列--poj2533、poj3903、hdu1025
- 同一页面多次使用kindEditor的上传文件——兼容大部分浏览器
- JPA 常用操作 与 Hibernate 的区别
- Vuzix的M100安卓智能眼镜和Google Glass不同
- sql语句中insert into 表中 select多个值后插入数据
- No enclosing instance of type ChuangKou is accessible. Must qualify the allocation with an enclosing
- 不只是技术!成为IT经理必备的十大软技能
- 在Windows XP和Windows 7系统上安装.NET Framework 3.5框架
- 粒子系统
- 《解析极限编程:拥抱变化》读后感
- poi写Excel