Tag: 会议

Spring-Hibernate在webapp中使用,什么是Thread安全会话管理的策略

我正在使用Spring和Hibernate开发一个Web应用程序,我非常着迷于使应用程序线程安全并能够支持基于我的老板建议的重负载我最终编写自己的session和session container来实现session per request pattern 。 另外我有很多DAOs而且我不愿意为所有DAOs编写相同的save method我复制粘贴这个Hibernate GenericDAO (我不能说它是同样的事情,因为当时hibernate不归jboss所有)和做管道工作,并且在压力下,所有这些都变得很复杂,并且在生产中,StaleObjectException和重复的数据是正确的,我觉得是时候回顾我已经完成的工作,简化它并使其更加强大数据处理。 你应该知道的一件事是,一个请求涉及许多DAO。 有石英运行数据库中的一些更新。 尽管我想要更好地调整一切,但我没有时间做必要的研究,而Hibernate则是一种巨大的(学习)。 所以就是这样,我想借用你的经验并提出一些问题来了解要采取的方向。 问题1 :Hibernate生成的uuid是否足够安全,可以用于线程环境并避免StaleObjectException? 问题2什么是在threadSafe场景中使用hibernate getCurrentSession的最佳策略(我已经阅读了关于threadlocal的东西,但没有得到太多的理解,所以没有这样做) 问题3 :HIbernateTemplate会采用最简单的解决方案吗? 问题4 :如果要实现连接池并调整生产服务器的需求,您会选择什么? 请毫不犹豫地将我指向博客或在线资源,我需要的只是一种适用于我的场景的方法。 如果你这样做,你的方法。 感谢您阅读本文,欢迎大家的想法……

Hibernate Session刷新行为

我在一个网络应用程序中使用Spring和Hibernate, SessionFactory被注入到DAO bean中,然后这个DAO通过webservicecontext在Servlet中使用。 DAO方法是事务性的,在我使用的方法之一… getCurrentSession()。save(myObject); 一个servlet使用传递的对象调用此方法。 更新似乎不会立即刷新,大约需要5秒才能看到数据库中的更改。 调用DAO更新方法的servlet方法需要几分之一秒才能完成。 DAO的@Transactional方法完成后,可能不会发生冲洗? 它似乎不是一个规则 [我已经看到了]。 那么问题是:在每个DAO方法之后如何强制会话刷新? 这可能不是一件好事,但谈到Service层,一些方法必须以立即刷新结束,而Hibernate Session行为是不可预测的。 那么如何保证我的@Transactional方法在该方法代码的最后一行之后保留所有更改? getCurrentSession().flush() is the only solution? ps我在某处看到@Transactional与DB Transaction相关联。 方法返回,必须提交事务。 我没有看到这种情况发生。

spring-boot redis:如何使用户的所有会话无效?

我是redis的新手。 我已经按照本教程使用了redis的HttpSession。 https://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot.html 现在我的应用程序已“退出所有设备”选项。 单击该按钮时,如何删除或使该用户的所有会话无效? 此外,当用户更改其密码时,如何使除当前会话之外的所有会话无效? 编辑: 我尝试使用Session Registry。 @Autowired private FindByIndexNameSessionRepository sessionRepository; @Autowired FindByIndexNameSessionRepository sessions; @RequestMapping(value = “/logoutalldevices”, method = RequestMethod.GET) public Response test(HttpServletRequest request, HttpServletResponse response) throws Exception { SpringSessionBackedSessionRegistry sessionRegistry = new SpringSessionBackedSessionRegistry(sessionRepository); Collection usersSessions = sessions .findByIndexNameAndIndexValue(FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME, “myUserId”) .values(); usersSessions.forEach((temp) -> { String sessionId = temp.getId(); // sessionRegistry.removeSessionInformation(sessionId); SessionInformation info = […]

Kotlin数据类包装

Kotlin介绍了数据类的精彩概念。 这些类将基于构造函数中声明的属性派生equals()/hashCode() , toString() , getters()/setters()和copy()函数: data class KotlinUser(val name: String, val age: Int) 在Java中,这看起来像: public class JavaUser { public JavaUser(String name, Int age) { … } //getters //setters //equals()/hashCode() //toString() } 我的问题是关于在Kotlin中打包这些数据类文件。 来自Java我将JavaUser存储在自己的Class文件中: org.package.foo.JavaUser 由于数据类的简单性,我们是否在Kotlin中以相同的方式存储数据类文件? (即org.package.foo.KotlinUser和每个数据类的单独文件)。 另外,是否不赞成将多个数据类存储在一个类文件中?: org.package.foo.DataClasses包含: data class Foo(val a: String, val b: String) data class Bar(val a: Int, val b: Int) […]