小编Ste*_*tef的帖子

专有连接api的连接池(非jdbc)

我正在使用API​​连接到一些硬件终端和网络.API允许我连接到服务器,断开连接并查询数据,这与JDBC连接允许的操作非常相似.无论如何,由于这不使用JDBC Connection接口,我不能使用已存在的连接池.我想避免自己写一个,如果我可以使用已经存在的,或者可能只是在其上构建一个小适配器.任何人都知道任何允许我启用连接池的框架/库,可以处理我的连接,可以确保连接始终处于活动状态等?

我看过Commons Pool,但是这只给你几个类来放置/获取你的连接...它不做任何维护任务等(检查连接是否有时无效,重新连接等).我可以添加连接检查和重新连接的机制,如果有任何问题等,以防没有任何东西已经这样做.

干杯,斯蒂夫.

java connection-pooling

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

使用spring数据进行不区分大小写的排序

如何使用Spring-data Pageable进行不区分大小写的排序?

我在我的存储库中有这个方法

public interface ItemRepository extends QueryDslPredicateExecutor<Item>{
    @Query("SELECT o FROM Item o WHERE o.status = ?1")
    Page<Item> findByStatus(Item.Status status, Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)

我希望能够通过以下方式调用:

itemRepository.findByStatus(Status.completed, new PageRequest(0, 10, Direction.ASC, "lower(name)")
Run Code Online (Sandbox Code Playgroud)

请注意lower属性字符串中的函数.这不起作用,因为Spring-data期望那里有一个属性.这将被翻译成如下:

SELECT o FROM Item o WHERE o.status = ?1 ORDER BY o.lower(name)
Run Code Online (Sandbox Code Playgroud)

这当然不会起作用,因为对象上没有"低级"属性.

有没有办法让这项工作?

spring-data-jpa

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

模仿adwords api

我想测试连接到AdWords API的代码,而不是实际调用Google(这需要花钱;)).知道如何插入TrafficEstimatorServiceInterface的新实现吗?

AdWords客户端API使用Guice进行依赖注入,但我不确定如何修改Injector以修改它?!

如果它有帮助,这就是我现在实现它的方式:

    AdWordsServices adWordsServices = new AdWordsServices();
    AdWordsSession session = AdwordsUtils.getSession();

    TrafficEstimatorServiceInterface trafficEstimatorService =
            adWordsServices.get(session, TrafficEstimatorServiceInterface.class);
Run Code Online (Sandbox Code Playgroud)

java guice google-adwords

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

在 spring-data-jpa 中设置延迟加载集合的批量大小

我需要生成一个包含数据库导出的 CSV 文件。由于数据可能非常大,我想使用特定批量大小的延迟加载,这样当我迭代 DAO/Repository 返回的集合时,我只会在某个时刻加载一批。我希望这由集合自动完成(例如,否则我可以仅加载一页又一页,用作Pageable参数)。

这是一些代码,希望能让事情变得更清楚。我的控制器看起来像这样:

public ModelAndView generateCsv(Status status) {
    //can return a large number of items.
    Collection<Item> items = itemRepository.findByStatus(status);

    return new ModelAndView("csv", "items", items);
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我将该集合传递给视图(通过 ModelAndView 对象),视图将迭代它并生成 CSV。

我希望集合知道如何在内部加载下一批,这是延迟加载集合通常应该做的事情。

有没有办法用 Spring-data 或普通的 JPA 来做到这一点?我从 Hibernate 了解到ScrollableResults,但我不喜欢它有两个原因:它不是 JPA(我必须使我的代码依赖于 Hibernate),并且它不使用集合 API,因此我必须发表我的观点了解 ScrollableResults。至少如果它能够实现Iterable,那就会变得更好,但事实并非如此。

因此,我正在寻找一种使用特定批量大小来指定集合要延迟加载的方法。也许是这样的:

@Query("SELECT o FROM Item o WHERE o.status = ?1")
@Fetch(type = FetchType.LAZY, size = 100)
Page<Item> findByStatus(Item.Status status);
Run Code Online (Sandbox Code Playgroud)

如果使用 Spring Data 无法实现类似的操作,您知道是否可以使用 QueryDsl 来完成?QueryDsl 存储库返回 Iterator 对象这一事实让我认为它可能会延迟加载这些对象,尽管我找不到这方面的文档。

谢谢,斯特夫。

jpa spring-data-jpa

5
推荐指数
0
解决办法
1410
查看次数

标记/注释可以优化的代码的标准方法?

我正在寻找一种方法来标记可以优化的代码,以便我或在项目之后跟随我的任何人知道在性能成为挑战时可以优化什么以及如何优化.

根据我和许多其他人的经验(例如,检查Joshua Block的"Effective Java Programming"),我现在不进行优化的原因是代码清晰度大多数时候比代码优化更重要.因此,我更喜欢保持代码清晰易懂(这基本上意味着,按照任何人的方式实现事情,在真正需要之前不要尝试任何花哨的东西).但是,当性能成为问题时,最好确切地知道在哪里查看并以代码清晰度为代价进行优化.我希望能够标记代码可以优化的地方,并提供一些关于如何的提示.

我想这样做的方法是使用如下注释:

public class UserDao {
    @Optimizable (hint="cache returned data; ")
    public List<User> getUsers(int userType) {
        //some code getting user and checking if user is of that type.
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有标准 - 社区广泛使用 - 标记代码的方式?或者你更了解如何做到这一点?

使用注释可以使工具轻松检查可优化的代码并为其生成一些报告.另一种方法可能是使用类似javadoc的标记,但不确定工具能够轻松发现它.

谢谢,Stef.

添加:

好吧,Rick的回答似乎涵盖了评论中所有这些做法.虽然注释怎么样?我发现这有一些优势,因为您可以发现代码问题/优化选项,即使您没有源代码并通过为这些方法/类提供新实现并利用多态来进行优化.你知道是否有这样的标准注释?

java optimization annotations

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