小编pal*_*lto的帖子

何时以及如何使用hibernate二级缓存?

我很难理解hibernate何时命中二级缓存以及何时使缓存无效.

这就是我目前所理解的:

  • 二级缓存在会话之间存储实体,范围是SessionFactory
  • 您必须告诉哪些实体要缓存,默认情况下不会缓存任何实体
  • 查询缓存将查询结果存储在缓存中.

我不明白的是

  • 什么时候hibernate命中这个缓存?
  • 假设我已经设置了二级缓存,但没有设置查询缓存.我想缓存我的客户,其中有50000个.我可以通过哪些方式从缓存中检索客户?
  • 我假设我可以通过缓存中的id获取它们.这很容易但也不值得缓存.但是,如果我想与所有客户进行一些计算,该怎么办?假设我想显示一个客户列表,然后我将如何访问它们?
  • 如果禁用查询缓存,我将如何获得所有客户?
  • 如果有人更新了其中一个客户,会发生什么?
    • 该客户是否会在缓存中失效或所有客户都会失效?

或者我认为缓存完全错误?在这种情况下,哪种更适合使用二级缓存?hibernate文档根本不清楚缓存如何在现实中工作.只有如何设置它的说明.

更新: 所以我已经明白二级缓存(没有查询缓存)对于按ID加载数据会很好.例如,我有用户对象,我想检查Web应用程序中每个请求的权限.通过在二级缓存中缓存用户来减少数据库访问是否是一个好例子?就像我将用户ID存储在会话中或我需要检查权限的任何地方,我会通过它的id加载用户并检查权限.

java caching hibernate second-level-cache

85
推荐指数
3
解决办法
5万
查看次数

使用Spring MVC和Boot刷新静态内容

我正在评估Spring MVC&Boot和AngularJs来构建Web应用程序.我遇到的问题是,当我对静态内容(html,js,css)进行修改时,我每次都必须重新启动应用程序.我希望有一种方法可以解决这个问题,因为重新启动静态内容更改的整个应用程序效率不高.我尝试过的每个其他Web应用程序框架都允许动态更新静态内容文件(甚至只是Spring MVC和普通的旧WAR应用程序).

我从"使用Spring Boot Actuator构建RESTful Web服务"指南(http://spring.io/guides/gs/actuator-service/)设置了我的项目.基本上它使用Spring Boot和MVC控制器来创建REST服务.另外,我使用"使用AngularJS使用RESTful Web服务"指南(http://spring.io/guides/gs/consuming-rest-angularjs/)来构建AngularJS的前端.它创建一个显示REST服务响应的网页.我所做的唯一改变是请求发送到我的应用程序而不是" http://rest-service.guides.spring.io/greeting ".我的静态内容存储在"src/main/resources/public"文件夹中.此设置正常工作,但它不会重新加载静态内容.

java spring-mvc spring-boot

43
推荐指数
4
解决办法
6万
查看次数

如何在CDI中动态创建实例

我们假设我有一个Car类.在我的代码中,我想创建10辆汽车.Car类有一些@Inject注释依赖项.这样做的最佳方法是什么?

CDI有一个Provider接口,我可以使用它来创建汽车:

@Inject Provider<Car> carProvider;
public void businessMethod(){
    Car car = carProvider.get();
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果我没有CarFactory,它有一个带有@Produces注释的方法来创建汽车,那就不行了.尽管它反映了现实世界我无法在没有工厂的情况下制造汽车,但我宁愿不为所有东西编写工厂.我只是希望CDI容器像任何其他bean一样创建我的汽车.你怎么建议我创造那些汽车?

java cdi java-ee-6

12
推荐指数
2
解决办法
1万
查看次数

用于Java的作业排队库/软件

前提是:对于异步作业处理,我有一个自制的框架:

  • 在数据库中存储作业
  • 有一个简单的java api为它们创建更多的作业和处理器
  • 处理可以嵌入到Web应用程序中,也可以在不同的计算机上自行运行以进行扩展
  • 用于监视队列和取消队列项的Web UI

我想用一些现成的库替换它,因为我希望这些更强大,我不想保持这个.我一直在研究这个问题,并认为你可以使用类似的JMS.但我仍然需要构建一个简单的java API,找出一个运行时,我想在扩展和构建监控UI时进行处理.我觉得我唯一能从JMS中受益的是我不需要做的就是数据库的东西.

是否有类似的东西是现成的?

UPDATE

基本上这是我想要做的设置:

  • Web应用程序在Servlet容器或Application Server中运行
  • Web应用程序使用客户端API创建作业
  • X数量的机器处理这些工作
  • 从UI监视和管理作业

java

9
推荐指数
1
解决办法
6910
查看次数

如何使用maven项目轻松部署到Karaf Osgi容器

我正在开发一个OSGI包,用于使用PDFBox库解析PDF文件.我使用maven构建项目,使用Karaf作为OSGI容器.PDFBox库与OSGI兼容,所以我认为这很容易.但我无法正确获得部署模型.

在传统的Web应用程序中,我将构建一个包含所有依赖项的WAR文件,并将其放在Servlet容器中,然后部署它.另一方面,我想出如何安装osgi包的唯一方法是手工完成.我必须创建一个安装指令文件,列出必须手动下载并复制到Karaf部署文件夹的所有依赖项,并确保按正确的顺序执行.我觉得自己又回到了石器时代.

必须有一个更简单的方法,对吧?我仍然使用maven来声明依赖项,但我只需要使用提供的范围.如果可以自动安装这些依赖项,那将会很棒.

我正在使用maven-bundle-plugin从我的应用程序生成一个包.它确实生成了一个OBR存储库(repository.xml),我尝试使用obr karaf插件安装我的软件包,但它仍然无法帮助依赖.

osgi maven apache-karaf karaf karaf-maven-plugin

9
推荐指数
1
解决办法
6673
查看次数

如何登录木偶代理和主人

Puppet默认将日志记录写入syslog.这是为什么?大多数软件都写入一些单独的日志文件.我检查了文档,并提到您可以写入日志文件,但有人提到"通常不使用它".这是个坏主意吗?

跟踪木偶记录的典型设置是什么?在/ var/log/messages文件中使用grep?

syslog puppet

8
推荐指数
2
解决办法
2万
查看次数

使用Spring Security对Facebook进行身份验证

我正在使用Spring Security 3.0.x,我希望我的用户使用OpenId和Facebook进行身份验证.目前我的OpenId部分正在运行,但我对用户如何使用Facebook登录感到困惑.我已经阅读了关于Spring安全性的OAuth,但是就像我所说的那样,它只对访问资源有好处.示例应用程序使用用户名和密码进行身份验证

所以我的问题是,如何使用Spring安全性对Facebook用户进行身份验证?

java spring facebook oauth spring-security

6
推荐指数
2
解决办法
8279
查看次数

如何在SQL查询中安全地使用*作为通配符

我需要实现一个搜索,用户可以输入*作为外卡.他们正在搜索的数据库是SQL服务器.我只想用*替换*:

userInput = userInput.replace('*', '%');
Run Code Online (Sandbox Code Playgroud)

我担心,因为我"手工"这样做,我可能会引入一些错误或安全漏洞.你觉得这样做有什么问题吗?有没有图书馆可以帮我这么做?

我使用Hibernate作为ORM映射器和Criteria API来创建查询,如果它有助于答案.

java sql hibernate

6
推荐指数
1
解决办法
1050
查看次数

在客户端中删除有状态的EJB bean

我正在学习EJB,据我所知,当客户端获取有状态会话bean时,服务器会将其保留在内存中(或钝化它),直到客户端删除bean.非常简单,除了我在哪里看到客户端如何实际删除bean的任何示例.除了关闭客户端应用程序之外,您如何做到这一点?或者,如果我想重新启动,我是否只需要在所有有状态bean中实现重置方法?

java ejb-3.0

5
推荐指数
1
解决办法
2121
查看次数

在java中继承带有构造函数参数的类

情况是我想继承一个对象以获得更清晰的构造函数接口:

class BaseClass {
    public BaseClass(SomeObject object){
        ...
    }
}

class SubClass extends BaseClass{
    private SubObject subObject = new SubObject();
    public SubClass(){
        super(new SomeObject(subObject)); // doesn't compile
    }
}
Run Code Online (Sandbox Code Playgroud)

但要做到这一点,我需要在构造函数之前做一些事情,就像上面的例子中一样,但不能,因为Java不允许这样做.有没有办法解决?我开始觉得,如果你的类被设计为子类,它应该总是实现默认构造函数并为它需要的值提供setter ...有时你可以直接在超级构造函数中创建一个新对象.作为一个参数,但如果你需要对你创建的对象的引用,那么你就是一个人.

java

5
推荐指数
1
解决办法
1592
查看次数

在重新部署时,是否仍然无法摆脱PermgenSpace异常?

这是我一直以来的一个老问题.我想在开发环境中重新部署.在一些部署之后,我用完permgen并且必须杀死服务器.多年前我试图找到问题的解决方案,但刚刚发现Spring和Hibernate互相指责问题.有没有找到解决方案?

Spring Roo声称它不会在运行时生成类,因此它不会成为问题.它真的有效,如果确实如此,我该如何配置我的应用程序呢?

我知道这里有两个问题,但如果你能回答一个问题就够了:)

java jvm permgen

2
推荐指数
1
解决办法
285
查看次数

如何在JAX-RS中处理意外异常

我的技术堆栈是Tomcat(servlet 3.0),Jersey用于JAX-RS,Spring和Hibernate.当Hibernate中的某些数据转换错误出现意外问题时,我不希望客户端看到我的堆栈跟踪是否存在Tomcat尝试默认打印的异常.但是我想记录这些异常,这样我就可以找到错误并解决问题.

我的第一次尝试是使用来自JAX-RS的ExceptionMapper并且天真地认为可以解决我的问题.但后来我发现泽西岛抛出了自己的例外,例如未映射的网址是com.sun.jersey.api.NotFoundExceptions.这会导致记录404异常,这是我不想要的.更糟糕的是,客户端不再获得404而是获得状态代码500.

我可以为jersey抛出的异常创建异常映射器,但我可能会错过一些东西.这样的事情有最好的做法吗?

java spring servlets jax-rs jersey

1
推荐指数
1
解决办法
2737
查看次数