ORM-Hibernate
OkidoGreen
这个作者很懒,什么都没留下…
展开
-
SpringBoot引入hibernate.validator参数校验
(1626条消息) SpringBoot引入hibernate.validator参数校验_开源必胜的博客-CSDN博客。转载 2023-04-14 17:10:49 · 103 阅读 · 0 评论 -
hibernate反向生成数据库表
hibernate反向生成数据库表第一步:添加Hibernate jar包,hibernate.cfg.xml写好数据源.hibernate.cfg.xml:"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0转载 2015-01-07 12:03:06 · 4852 阅读 · 0 评论 -
Hibernate SQL查询 addScalar()或addEntity()
Hibernate除了支持HQL查询外,还支持原生SQL查询。 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。该接口是Query接口的子接口。 执行SQL查询步骤如下: 1、获取Hibernate Session对象 2、编写S转载 2015-02-02 14:13:45 · 1404 阅读 · 0 评论 -
Hibernate事件系统及监听器
1.Hibernate事件系统(Event System)及监听器•如果需要响应持久层的某些特殊事件,你也可以使用Hibernate的事件框架。 该事件系统可以用来替代拦截器,也可以作为拦截器的补充来使用。•基本上,Session接口的每个方法都有相对应的事件。比如 LoadEvent(对应session.load()方法),FlushEvent(对应session转载 2015-02-03 19:47:07 · 1946 阅读 · 1 评论 -
hibernate3新特性EventListener完整实例
参考文章:http://www.iteye.com/topic/477134 项目中要对数据的更新做审计,比如订单的每一项的变化,会员主要信息的变化等。 老版的程序是这样处理的,在更新前先查一次数据库,然后依次比对各列,得到修改变化的信息。但在我们新版程序中,由于用到了singleSesssion,那么在一个Session中不允许出现两个ID相同的对象,所以转载 2015-02-03 20:10:11 · 3498 阅读 · 0 评论 -
Hibernate 监听用户操作日志
我们前段时间有个.net项目需要用j2ee改造,有个需求是要对所有的数据库操作(CRUD)都要做历史记录,要记录操作内容,操作的用户和操作时间。这样的需求称为审计日志 Audit log。项目采用Spring构建,持久层技术采用的是 JPA规范 + Hibernate实现的方案要实现审计日志的需求,我试用了多种技术方案,最终确定了采用Hibernate 3的新特性事件驱动架构来解决:转载 2015-02-03 20:10:46 · 4179 阅读 · 0 评论 -
hibernate 拦截器和事件框架
注册监听器:MyPreInsertListener.java:[java] view plaincopypackage eventListener; import org.hibernate.event.PreInsertEvent; import org.hibernate.event.PreInsertEv转载 2015-02-03 19:58:53 · 1799 阅读 · 0 评论 -
hibernate -- 分页模糊查询中setParameter 和setParameterList
在分页模糊查询中碰到setParameter 和setParameterList这两个方法setParameter以前就只会用setParameter(int arg,String str),我用到了from table A where 1=1 and ... like ? 还可以用另外一种方法: setParameter(String arg0, Object arg1)但是转载 2014-12-11 17:02:18 · 5720 阅读 · 0 评论 -
Hibernate 一对多 多对一 实例 及一些 问题(2)字典项的使用
有时在多对一时,只有插入时需要用到 外键值(即一对象的主键),而查询时需要得到完整对象/** * */package com.wonders.task.sample.bo;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;原创 2014-04-03 20:24:59 · 1829 阅读 · 0 评论 -
Hibernate调优之select new map()
Hibernate调优不只是设置一下lazy,调整一下由谁来维护这个字段而已。 这次要说的是对查询语句进行优化——select new map()。 select new map语句结果说明。 语句一: String hql=“select s.name from Student s”;转载 2014-11-21 22:21:15 · 4613 阅读 · 0 评论 -
Hibernate的dynamic-insert与dynamic-update
Hibernate允许我们在映射文件里控制insert和update语句的内容.比如在映射文件中 1)元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入,默认true 2)元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改,默认true转载 2014-11-04 13:36:42 · 1273 阅读 · 0 评论 -
Hibernate 配置文件precision与scale的说法
Oracle使用标准、可变长度的内部格式来存储数字。这个内部格式精度可以高达38位。 NUMBER数据类型可以有两个限定符,如: column NUMBER ( precision, scale) precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38作为精度。 scale表示数字小数点右边的转载 2014-02-19 16:03:35 · 2954 阅读 · 0 评论 -
使用注解风格学习Hibernate和JPA的主键生成策略
主键是关系数据库中的一个基本概念,它用来保证记录的唯一性。简单来说,就是同一张数据库表中,不允许存在多条相同主键的记录。主键生成策略,就是当向数据库表中插入记录的时候,这个记录的主键该如何生成。绝大部分情况下,主键都是没有业务含义的,所以开发者不会、也不需要,显示地设置实体对象的主键值。但是对于数据库来说,主键是必须的,显然这个责任,落在了hibernate这个持久层框架上。对于初学hiberna转载 2014-06-30 21:57:24 · 18137 阅读 · 0 评论 -
Hibernate的clear(),flush(),evict()方法详解
1.Clear 方法 无论是Load 还是 Get 都会首先查找缓存(一级缓存) 如果没有,才会去数据库查找,调用Clear() 方法,可以强制清除Session缓存。例:[c-sharp] view plaincopyprint?public void testClear(){ Session转载 2014-08-06 16:44:39 · 28226 阅读 · 2 评论 -
HQL实现单一 属性与多个属性的查询
一、在hibernate_hql项目中,继续上一个博文二、创建测试类package com.bjsxt.hibernate;import java.util.Iterator;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import junit.framew转载 2013-11-07 11:27:25 · 3899 阅读 · 0 评论 -
Hibernate merge、update与saveOrUpdate方法的区别
通常下面的场景会使用update()或saveOrUpdate(): ?程序在第一个session中加载对象 ?该对象被传递到表现层 ?对象发生了一些改动 ?该对象被返回到业务逻辑层 ?程序调用第二个session的update()方法持久这些改动 saveOrUpdate()做下面的事: ?如果对象已经在本session中持久化了,不做任何事转载 2014-08-08 09:13:01 · 4875 阅读 · 0 评论 -
Hibernate merge与update区别
merge与update区别注:就因为这2个方法的区别还得我花了太多时间项目迟迟不能做完 ,但是让我解决了,学到了东西了.这是一段代码public void updateData(Object obj) { try { tx = this.getSession().beginTransaction(); // 执行修改操作 //转载 2014-06-13 11:31:28 · 4297 阅读 · 0 评论 -
Column标签 放在属性上和get方法上
private String age;原创 2014-10-22 15:30:12 · 5654 阅读 · 0 评论 -
HQL: Hibernate查询语言
Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。第 15 章 HQL: Hibernate查询语言Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,转载 2014-11-12 12:54:16 · 1099 阅读 · 0 评论 -
Hibernate数据拦截与事件监听
拦截器(Interceptor)org.hibernate.Interceptor接口定义了Hibernate中通用拦截机制创建Session对象的时候,所有的Session对象或者这个Session对象的所有持久化操作的动作都会被指定的拦截器进行拦截.Interceptor接口的方法afterTransactionBegin()当一个事务时候启动时,会立刻调用这个转载 2015-02-03 15:28:48 · 1427 阅读 · 0 评论 -
Hibernate拦截器(Interceptor)与事件监听器(Listener)
前言:由于项目中(S2SH框架)用到了memcache缓存服务器,考虑到同步问题是用每个bean变更时同时更新缓存还是用类似数据库trigger(触发器)去实现呢,答案当然是用类似trigger的方式了,其优点不言而喻,毕竟这么写一劳永逸。经调查发现,hibernate有两种方式可以实现: 拦截器(Intercept):与Struts2的拦截器机制基本一样,都转载 2015-02-03 19:42:41 · 11266 阅读 · 0 评论 -
Hibernate与 MyBatis的比较
最近做了一个Hibernate与MyBatis的对比总结,希望大家指出不对之处。第一章 Hibernate与MyBatisHibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。MyBatis 参考资料官网:转载 2016-03-04 12:40:12 · 1053 阅读 · 0 评论 -
Hibernate乐观锁实现之Version
通过在表中及POJO中增加一个version字段来表示记录的版本,来达到多用户同时更改一条数据的冲突数据库脚本: create table studentVersion (id varchar(32),name varchar(32),ver int);POJO package Version;public class Student {转载 2014-04-02 19:46:21 · 3517 阅读 · 0 评论 -
数据库(Hibernate)事务与并发问题处理(乐观锁与悲观锁)
目录一、数据库事务的定义二、数据库事务并发可能带来的问题三、数据库事务隔离级别四、使用Hibernate设置数据库隔离级别五、使用悲观锁解决事务并发问题六、使用乐观锁解决事务并发问题 Hibernate事务与并发问题处理(乐观锁与悲观锁)一、数据库事务的定义 数据库事务(Database Transaction)转载 2016-08-16 14:20:37 · 2358 阅读 · 0 评论 -
深入hibernate的三种状态
http://www.cnblogs.com/xiaoluo501395377/p/3380270.html学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久转载 2017-06-01 14:57:20 · 805 阅读 · 0 评论 -
详解Hibernate中的二级缓存
http://m.blog.csdn.net/ZHOUCHAOQIANG/article/details/47748179关于get 方法:Hibernate3.x回去查二级缓存的,然后再去查数据库,没有则返回null,这跟load(或find)一样,当然load找不到则返回异常。Hibernate3.x之前的是越过二级的 1.前言这篇博客再前几篇博转载 2017-07-14 10:32:36 · 944 阅读 · 0 评论 -
Spring中如何配置Hibernate事务
为了保证数据的一致性,在编程的时候往往需要引入事务这个概念。事务有4个特性:原子性、一致性、隔离性、持久性。 事务的种类有两种:编程式事务和声明式事务。编程式事务就是将事务处理放在程序中,而声明式事务则是通过配置文件或者注解进行操作。 在Spring中有声明式事务的概念,通过和Hibernate类似框架的集成,可以很好的完成声明式事务。转载 2014-11-21 22:24:42 · 1254 阅读 · 0 评论 -
Spring使用OpenSessionInViewFilter解决Hibernate的lazy延时加载问题
Spring为我们解决最让人头痛的难题之一,Hibernate的Session的关闭与开启问题。当hibernate+spring配合使用的时候,如果设置了lazy=true,那么在读取数据的时候,当读取了父数据后,hibernate会自动关闭session,这样,当要使用子数据的时候,系统会抛出lazyinit的错误。Hibernate 允许对关联对象、属性进行延迟加载,但是转载 2014-05-22 14:50:02 · 2422 阅读 · 0 评论 -
Hibernate 参数设置一览表
实现包含了Hibernate与数据库的基本连接信息的配置方式有两种方式:第一种是使用hibernate.properties文件作为配置文件。第二种是使用hibernate.cfg.xml文件作为配置文件。转载 2014-04-12 12:03:48 · 9926 阅读 · 0 评论 -
hibernate与mybatis异同与比较(涵盖网上各个版本,清晰明了)
一、序言 最近一直用mybatis做开发,以前用过hibernate,能感受到一些它们在使用上的区别,不过总想抽出时间来好好比较比较弄弄清楚它们各自的优劣,以便更好进行选择和深入的了解。 网上也看了很多资料,结合自己的使用体会,粗率地概括和总结了一下,以供大家参考。二、具体运用上的不同1、所需的jar包Mybatis:只需要3个(mybati转载 2016-03-04 12:30:57 · 1708 阅读 · 0 评论 -
hibernate缓存机制详细分析
在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session级别)、二级缓存(sessionFactory级别)以及查询缓存,当然还要讨论下我们的N+1的问题。随笔虽长,但我相信看完的朋友绝对能对hibernate的 N+1问题以及缓存有更深的了解。一、N+1问题首先我们来探讨一下N+1的问题,我们先通过一个例子来看一下,什么是N+1问题:li转载 2015-01-23 10:56:10 · 1052 阅读 · 0 评论 -
Hibernate 一对多 多对一 实例 及一些 问题(1)插入及查询
Clazz.java/** * */package com.wonders.task.sample.bo;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax原创 2014-04-03 20:11:49 · 3768 阅读 · 0 评论 -
利用Hibernate 3 Interceptor生成审计日志
在实际应用中,有可能需要审计对数据库中重要数据的更新历史。如:每当发生向T_USER表中插入或更新记录的事件时,就向审计日志表插入一条记录。 对于此种业务场景,可以采用数据库的触发器来生成审计日志,这种方法较为简便,并且有很好的性能,但是不支持跨数据库平台,缺乏灵活性。因此我们可以采用Hibernate 3以后提供的拦截器来实现相应的功能。当Session执行save()、update()转载 2015-02-03 19:48:03 · 3214 阅读 · 0 评论 -
关于hibernateTemplate和jdbcTemplate的是否共享事务的说明
1、hibernateTemplate 与 jdbcTemplate 事务为共享。2、但hibernate中的HQL方法,比如save update等 ,若不调用flush(),则数据只存在于缓冲区,未提交到数据库中,此时事务并未提交,故共享事务中的 jdbctemplate无法查询到该数据;调用flush后,数据也可以共享。举例如下:1、hibernateTemplate.save(...原创 2015-01-04 19:57:10 · 2634 阅读 · 0 评论 -
Hibernate中get和load方法的区别
这次我们来谈一下Hibernate3.2 Session加载数据时get和load方法的区别,其实这个在网上有很多的论述,可大多语焉不详或经不起实践的推敲,让很多初学者学的满腹疑窦,现在我给大家讲解一下: 1. 对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库,数据库中没有就返回null。这个相对转载 2015-01-04 17:28:40 · 2112 阅读 · 0 评论 -
Hibernate Session的Flush模式
首先要知道的是:Hibernate会尽量将与数据库的操作延迟,直到必须要与数据库进行交互,例如save方法一般会在提交时才真正执行,最终在提交时会以批处理的方式与数据库进行交互,以提高效率。而将操作延迟,就是利用缓存,将最后要处理的操作放到缓存中。flush方法的主要作用就是清理缓存,强制数据库与Hibernate缓存同步,以保证数据的一致性。它的主要动作就是向数据库发送一转载 2015-01-23 15:11:58 · 1874 阅读 · 0 评论 -
hibernate缓存:一级缓存和二级缓存
1.什么是缓存? 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能。Hibernate在进行读取数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据(我们把这称做“缓存命 中"),则就直接把命中的数据作为结果加以利用,避免了大量发送SQL语句到数据库查询的性能转载 2015-01-23 13:43:45 · 1082 阅读 · 0 评论 -
hibernate一级缓存
一级缓存的生命周期和session的生命周期一致,当前sessioin一旦关闭,一级缓存就消失,session间不能共享一级缓存的数据,因此一级缓存也叫session级的缓存或事务级缓存。一级缓存只存实体对象的 ,它不会缓存一般的对象属性(查询缓存可以),即当获得对象后,就将该对象的缓存起来,如果在同一session中如果再去获取这个对象时,它会先判断缓存中有没有该对象的id,如果有就直接从缓存中转载 2015-01-23 14:44:14 · 1096 阅读 · 0 评论 -
hibernate uniqueResult方法
如果查询返回多个值用list()方法[java] view plaincopyprint?public void testQuery(){ Configuration config = new Configuration().configure(); SessionFactory factory =转载 2014-02-11 16:04:07 · 1935 阅读 · 1 评论 -
使用Hibernate.initialize解决no session的延迟加载问题
出现no session or session was closed这样的异常不多解释了,网上已经一大堆。 但还是提不推荐把延迟加载特性去掉,而是必要时自己采取办法得到想要的对象。这样做更加灵活和效率高。虽然是避免不了一些代码量。 之前采取的方案是在session未关闭之前,把其他表对象查询出来并且clone。不过现在无意中发现其实hibernate其实已经提供初始化的方法了,而未必自己去转载 2014-02-27 14:29:13 · 7622 阅读 · 0 评论