
hibernate
陈家宝
其实我觉得吧,压力也没那么大[doge]
展开
-
hibernate_乐观锁
首先, 介绍下hibernate 提供的乐观锁:在多线程的情况下, 不同线程中的事务想要拿同一个对象, 如果这个对象加了乐观锁, 那么所有的事务都能拿到这个对象( 即select 语句有值返回 ), 无论你拿这个对象是不是为了修改它. 不同的事务就可以对这个对象做各自的操作. 在提交事务的时候, 如果大家都修改了这个对象的属性, 那么先提交的事务正常提交, 后面提交的事务, 由于它对该对象的操原创 2017-09-25 22:48:05 · 276 阅读 · 0 评论 -
ssh项目中使用二级缓存
Hibernate中的二级缓存, 即绑定在SessionFactory上的缓存:项目添加二级缓存1、需要引入三个jar包 在hibernate下能找到 hibernate-distribution-3.5.6-Final\lib\optional\ehcache\ehcache-1.5.0.jar 在srping下能找到 ..\lib\concurrent\backport-util-co...原创 2018-05-10 22:55:03 · 618 阅读 · 0 评论 -
openSessionInView
关于hibernate延迟加载, 报no session异常:1)简述:OpenSessionInView翻译过来就是:在表现层打开Session。2)作用:将Session对象的创建交给当前线程管理,当前线程维护着一个“Session的连接池”。每当用户发送一个请求,filter在接收到用户的请求Request后,就会将Session对象绑定到该请求上。 当请求被处理完毕,返回响应R...转载 2018-05-10 14:06:10 · 232 阅读 · 0 评论 -
hibernate_二级缓存(second cache)
适合用二级缓存的对象:该对象读的次数远远大于写的次数. 如果每次读出来是为了写(即频繁写的对象),则不适合放入二级缓存.因为如果一个经常写的对象放入二级缓存, hibernate 需要经常修改二级缓存里存放的该对象, 即锁住map, 其他线程就会锁在这, 性能差.下面介绍二级缓存如何使用:(1) 告诉hibernate 你使用哪个缓存框架( 以ehcache 为例 ), 在hibe原创 2017-09-22 13:45:50 · 431 阅读 · 0 评论 -
hibernate_映射枚举类型(Enum)
hibernate对于枚举类型(Enum) 的映射比较麻烦, 因为JDBC 不支持枚举类型. 但我们想保存Enum 怎么办呢? 方法还是有的:不推荐的解决方案: 自己实现org.hibernate.usertype.UserType 接口, 完成对Enum 类型的保存. 扩展: 其中的"type=xxx", xxx对应的就是一个实现UserType接口的实现类, 实现对指定数据的保存.原创 2017-09-22 11:01:30 · 954 阅读 · 0 评论 -
hibernate_映射大字段(图片,长文本等)
示例程序, 保存一张图片到mysql 数据库, 然后进行读取: @Before public void testSave() throws Exception{ Session session = HibernateUtil.getInstance().getSession(); session.beginTransaction(); BlobObj obj = new原创 2017-09-22 09:59:46 · 1491 阅读 · 0 评论 -
hibernate_查询重复数据 调优, iterate()
示例一种场景, 在many2one 的关系中, 可能many 方需要拿one 方( 员工的界面需要显示员工所在部门的名称 ), 如果many 方没有一个属性保存one 方内容, 可能出现"N+1"问题.有三种解决方案:(1) 使用iterate()进行查询, 前提是数据都在缓存里面(即前面查过了): /** * 缓存里面如果没有对应的数据, * 则使用iterate() 查询原创 2017-09-21 17:20:22 · 267 阅读 · 0 评论 -
hibernate_namedQuery, HQL解析优化
public void testNamedQuery(){ Session session = HibernateUtil.getInstance().getSession(); //HQL解析成SQL是非常耗费资源的,假如你的HQL被访问了上千万次. //可以在xxx.hbm.xml中定义该HQL, hibernate 在启动时就会去解析它,之后用到就不用再解析了. fo原创 2017-09-21 13:26:54 · 524 阅读 · 0 评论 -
hibernate_查询简介: 分页, 数据总数, 结果集的包装, 位置参数的设置
hibernate查询简介原创 2017-09-21 09:51:33 · 495 阅读 · 0 评论 -
hibernate_数据分页, 查询总数
hibernate中, 查询数据进行分页: public void testPage(){ int currentPage = 2;//第几页数据 int pageSize = 3;//每页多少条数据 Session session = HibernateUtil.getInstance().getSession(); //limit ?, ? List l =原创 2017-09-20 15:56:47 · 2858 阅读 · 0 评论 -
hibernate_检索(查询)简介
在hibernate 中,检索(查询)数据有三种方式.(1) 使用原生sql 语句. 例如: 查询 employee 表中以"T"或"A"开头的数据 public void testSql(){ Session session = HibernateUtil.getInstance().getSession(); NativeQuery query = session原创 2017-09-20 14:06:02 · 212 阅读 · 0 评论 -
Hibernate_映射继承关系
继承关系常用的两种映射关系:(1) one table 结合 join table : (2) per table : IdDomain 1 1原创 2017-09-20 09:50:48 · 310 阅读 · 0 评论 -
Hibernate_映射简单集合类型和组件集合类型
Hibernate_映射简单集合类型和组件集合类型(组合关系中, 从对象可用String 代替或者可以做成组件), 映射demo如下: 另外, 介绍一下Hibernate 中,各种集合如何映射. Set 集合:原创 2017-09-19 20:35:50 · 310 阅读 · 0 评论 -
opensessioninviewFilter导致org.hibernate.NonUniqueObjectException
起因:公司业务需求,增加了一个新的数据源,增加之后,起初一切正常,但是发现后台管理系统所有Ajax请求获取信息没有问题,但是涉及到保存操作就抛出异常。 异常:org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the...原创 2018-05-11 00:21:12 · 197 阅读 · 0 评论