hibernate 4.3 在使用获取数据获取不到数据库中最新变更的数据问题解决

hibernate 4.3 在使用获取数据获取不到数据库中最新变更的数据问题解决,应该是因为缓存问题

问题过程和现象

查询一个数据列表=》数据库中手动update了数据=》刷新页面,数据显示还是update之前的旧数据

网上找到解决办法

1、使用session.clear();在查询之前先清空缓存----经测试,此方法在4.3版本无效,其它版本没测试;

参考连接:https://www.linuxidc.com/Linux/2014-09/106458.htm

2、不使用hibernate默认连接池,改使用c3p0连接池,因为需要更换驱动,更换包,没有测试此方法;

参考连接:

https://blog.csdn.net/pengyufight/article/details/52950432

https://www.2cto.com/database/201411/351800.html

3、在查询中,也添加事务使用----经测试此方法有效,猜测可能是事务提交触发了缓存的更新

参考连接:

http://www.iteye.com/problems/37351

https://bbs.csdn.net/topics/392168198

原文地址:https://www.cnblogs.com/mxm2005/p/9535887.html

时间: 2024-09-27 07:05:40

hibernate 4.3 在使用获取数据获取不到数据库中最新变更的数据问题解决的相关文章

随机获取oracle数据库中的任意一行数据(rownum)

最近看oracle资料的时候,了解rownum的概念,以前只知道对数据库表进行简单的增删改查: 看到了rownum的概念后,突然想到了好多业务场景应该都可以适用的,比如在进行随机发奖的时候, 我们就可以从先查一下奖品表中可以发的总奖品数,然后通过java的Random类在总奖品数内生成一个随机整数X,然后调用 select * from (select rownum no,id from Table where rownum<=X ) where no >=X 获取出该条奖品,这样获取出来的值

关于数据库中varchar/nvarchar类型数据的获取注意事项

当在页面后台获取数据库表中某字段的数据时,需注意该数据的类型.防止因实际数据的字符长度因达不到指定数据类型规定的字符长度而导致空格的占位符. 比如: MSSQL中某一表的结构如下:   表中的数据: 当从表中获取某一个用户名(userName)或密码(userPwd)时,如果取出的数据作为条件进行判断是,需注意获取处的数据最好进行Trim()处理,去除数据两边的空格占位符 比如: 没有对数据进行Trim()处理前,从数据库中获取的数据因为原本的数据长度不够而导致空格占位符 对数据进行Trim()

C#获取并写入ORACLE数据库中中英文字符集问题

背景: 开发语言:C# 开发工具:VS2010 A方ORACLE数据库:中文字符集 B方ORACLE数据库:英文字符集 传递方式:webservice方式(取数据,并把取出的数据放到DataTable中,循环回写入B方的存储过程中) 问题: 从A方库里获取数据插入到B方库里写的存储过程里,到B方数据库后,汉字都变为乱码(问号较多) 解决方法: 方法一:最初从A方库取数据时用ORACLE的转换函数UTL_RAW.CAST_TO_RAW转换下该字段,即select UTL_RAW.CAST_TO_R

使用JDBC获取数据库中的一条记录并封装为Bean

比如我数据库中存入的是一条一条的用户信息,现在想取出一个人的个人信息,并封装为Bean对象,可以使用queryForObject来获取数据并通过new BeanPropertyRowMapper(Bean.class)将数据转化为javaBean对象. 用法: queryForObject:查询并返回对象 new BeanPropertyRowMapper(Bean.class):是queryForObject的一个参数,将返回的对象封装为什么对象 public User findByid(in

spring和hibernate整合时报sessionFactory无法获取默认Bean Validation factory

Hibernate 3.6以上版本在用junit测试时会提示错误: Unable to get the default Bean Validation factory spring和hibernate整合时报sessionFactory无法获取默认Bean Validation factory  ,是因为新版hibernate用到新的jar包造成的,默认会自动找验证包,吴国不需要这一步,可以在spring整合hibernate的配置节点中添加如下标红属性: <bean id="sessio

hibernate实现分表后获取insert自增ID方法。

#第一种基于原生的JDBC的方式实现 private Integer insert(POJO entity, String table) throws SQLException { String insertSQL = "INSERT INTO " + table + " (XXXX)VALUES(?,?,?,?,?,?,?,?)"; DataSource dataSource = SessionFactoryUtils.getDataSource(getHiber

Java三大框架之——Hibernate中的三种数据持久状态和缓存机制

Hibernate中的三种状态   瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过Session持久化操作,缓存中存在这个对象的数据为持久状态并且数据库中存在这个对象对应的数据为持久状态这个时候有OID. 游离状态:当Session关闭,缓存中不存在这个对象数据而数据库中有这个对象的数据并且有OID为游离状态. 注:OID为了在系统中能够找到所需对象,我们需要为每一个对象分配一个

以MyBatis+SpringMVC3.0实现的,借鉴了Hibernate设计思想,采用封装、抽象、继承的设计思想,做到了数据与相应的操作的高内聚低耦合的实现

QQ:1138789752 Email.java类: package com.lmc.ink.entity.seo; import com.lmc.ink.entity.IEntity; /** * 推广邮箱表(s_email)实体类 * @author lmc * */ public class Email extends IEntity { /** * 唯一标识 * */ public static final long serialVersionUID = 537132705L; /**

CAML获取SharePoint文档库中除文件夹外所有文档

方法一: ? 1 2 3 4 <QueryOptions>         <ViewAttributes Scope="Recursive" />     </QueryOptions> </query> 方法二: ? 1 2 3 4 5 <View Scope="RecursiveAll">     <Query>         <Where>...</Where>