小编man*_*nta的帖子

比较Querydsl,jOOQ,JEQUEL,activejdbc,iciql和其他查询DSL

有人能指出一些关于可用于Java的不同Query DSL库之间性能比较的资源,如:Querydsl,jOOQ,JEQUEL,activejdbc,iciql等等......

背景:我使用Spring JDBC模板,但仍然需要以纯字符串格式编写查询.虽然我在编写直接查询时没有问题,但我担心直接依赖于DB表名.我不想使用任何ORM框架,如Hibernate或JPA/EclipseLink.我需要尽可能高的原始性能(IMO,它们适用于更多以CRUD为中心的应用程序).我可以为这些DSL提供一些轻微的开销,只要它有点(我相信,它主要是StringBuilder/String连接!)

我考虑过在某些xml中使用外部化的命名查询.但只是试图评估不同的Query DSL库提供的价值.

编辑:更多关于我的要求: 我想知道使用他们的API方法构建中等复杂查询时这些之间的性能比较.我需要的是使用任何这些查询DSL库生成查询字符串并将其传递给Spring JDBC模板.所以,我想知道如果添加这个中间步骤会导致相当大的性能损失,我想使用命名查询或构建我自己的库,它只使用StingBuilder或类似的方法

用jOOQ,iciql,QueryDSL更新我的经验:

虽然我错过了在我的原帖中提到这一点,但我也热衷于易用性和我在实体类中需要的开销(如果需要任何额外的注释或实现).

jOOQ:

  • 需要将实体属性更改为特定于库的方式
  • 可以返回SQL查询字符串

Iciql:

  • 实体可以映射到没有或很少的变化(可以使用总共3种方式映射)
  • 但由此限制只选择查询(更新/删除/ ...再次要求实体更改)

QueryDSL:

  • 使用表绑定实体的多种方法(支持使用JPA注释的库特定方式除外).但我们至少需要修改实体
  • 没有简单/直接的方式来获取查询字符串

(所有观察对我都知之甚少;如果其中任何一个不正确,请更正)

综上所述,我坚持编写命名查询:(但由于Lukas Eder的答案似乎解释了我原来的帖子关注(表现),我接受了他的.

java performance spring-jdbc querydsl jooq

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

为什么不动画GIF而不是动画CSS精灵?

在最近的趋势中,我看到人们使用JavaScript而不是使用动画GIF动画CSS精灵?

例如:

这只是为了展示或试验技术,还是有任何好处.我有兴趣了解它的好处,如果有的话.我问的原因是我无法弄清楚在两种情况下我们都需要生成中间帧(主要是使用补间技术).

javascript animation css-sprites animated-gif

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

Backbone.js的数据表/网格小部件

任何人都可以建议在Backbone.js和jQuery支持的应用程序中使用数据表/网格小部件吗?

目前我正在使用DataTables.net小部件,我为Backbone.js编写了一个自定义绑定类型的函数.但是与Backbone及其API的绑定对我来说似乎很复杂.有没有任何简单的小工具和干净聪明的API(我喜欢YUI网格,但单独使用网格JS大小约为360KB +)

jquery widget datatables backbone.js

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

Jackson和Jettison在泽西岛使用

Jersey框架使用JacksonJettison库进行JSON解组/编组.AFAIK,Jettison用于将JSON映射到XML(具有不同的机制支持,如映射表示法),而Jackson用于JSON生成/解析(我也使用它而不用Jersey).

Jersey会将这两个用于两个不同的功能,还是两个用于相同的JSON生成/解析功能?

我只想要支持JSON格式.在我的第一次想到,似乎我可以删除任何依赖项,我认为我可以删除Jettison,因为Jacksone似乎是JSON生成/解析的更自然的选择.

java rest jersey jettison jackson

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

突出显示Backbone.js应用程序中的当前导航状态

我想突出显示当前的导航状态.就像哈希变换一样#home,我想以不同的方式设置'Home'菜单链接的样式,并且类似于其他链接.

当单击和其他链接时route:home,Backbone.js会触发单个事件,例如.......我看不到每个hashchange都会触发的任何常见事件.有了这个,我需要通过绑定到所有路由事件来编写状态突出显示逻辑,我认为这不是一个好的解决方案.route:some-other#home

所以,我已经Backbone.Router.route在我的路由器子类/对象中重写了,比如

// override backbone' Router.route method to publish 
// common 'route_change' event for any hash change
route : function(route, name, callback) {
    Backbone.history || (Backbone.history = new Backbone.History);
    if (!_.isRegExp(route)) route = this._routeToRegExp(route);
    Backbone.history.route(route, _.bind(function(fragment) {
        var args = this._extractParameters(route, fragment);
        callback.apply(this, args);
        this.trigger.apply(this, ['route:' + name].concat(args));

        // ADDED BY: ManiKanta G
        // name: route method
        // fragment: route path
        // args: any additional args
        this.trigger.apply(this, ['route_change'].concat(name, fragment, args));
    }, …
Run Code Online (Sandbox Code Playgroud)

navigation highlighting backbone.js

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

停止承诺链有多个陷阱

在Node.js中,我需要异步读取文件并验证其内容。我正在使用Node.js 6.6bluebird 3.4.6

示例代码:

// pseudo function to read file contents - resolves when 'flag' is true, rejects when 'flag' is false.
function readFile(flag) {
    return new Promise(function (resolve, reject) {
        console.log('Reading file...');
        if (flag) {
            resolve('File contents');
        } else {
            reject('readFile error');
        }
    });
}

// pseudo function to validate file contents - resolves when 'flag' is true, rejects when 'flag' is false.
function validate(fileContents, flag) {
    return new Promise(function (resolve, reject) {
        console.log('Validating file: ', …
Run Code Online (Sandbox Code Playgroud)

node.js promise bluebird

7
推荐指数
2
解决办法
4187
查看次数

Spring是不是真的支持接口注入?

我知道Spring不支持接口注入,我已多次阅读过.

但是今天我在Martin Fowler(链接)中看到一篇关于IOC的文章时,似乎在Spring中使用ApplicationContextAware是类似于Interface注入的.

当我们的Spring bean需要Spring'上下文引用时,我们将实现ApplicationContextAware并实现setApplicationContext(ApplicationContext context)方法,并且我们将bean包含在配置文件中.这不是接口注入,在那里告诉Spring注入(或),比如说,将上下文的引用传递给这个bean吗?

或者我在这里遗漏了什么?感谢您的任何信息!

ManiKanta

java spring inversion-of-control

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

JavaScript 中自定义事件处理的不同方式有什么区别?

我发现了以下关于 JavaScript 中自定义事件处理的帖子。从这些文章中,(至少)有两种处理/触发自定义事件的方法:

  1. 使用 DOM 方法(createEvent、dispatchEvent)
  1. 自定义代码

但是处理(触发和订阅)自定义事件的推荐方法是什么?

[编辑]这个问题的上下文不使用任何库,如 jQuery、YUI...,而只是简单的 JavaScript

[编辑2]似乎存在细微的差异,至少在错误处理方面是这样。Dean Edwards ( http://dean.edwards.name/weblog/2009/03/callbacks-vs-events/ ) 建议采用前一种方式进行自定义事件处理。我们可以说这是有区别的吗?

javascript dom-events

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

当与Java中的超类型引用一起使用时,isAnnotationPresent()返回false

我试图使用反射从超类型引用变量获取注释细节,以使该方法接受所有子类型.但isAnnotationPresent()回来了false.与其他注释相关的方法相同.如果在确切类型上使用,则输出符合预期.

我知道,即使我通过超类型引用,也可以在对象上获得注释信息.

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Table {
    String name();
}
@Table(name = "some_table")
public class SomeEntity {

    public static void main(String[] args) {
        System.out.println(SomeEntity.class.isAnnotationPresent(Table.class)); // true
        System.out.println(new SomeEntity().getClass().isAnnotationPresent(Table.class)); // true

        Class<?> o1 = SomeEntity.class;
        System.out.println(o1.getClass().isAnnotationPresent(Table.class)); // false

        Class<SomeEntity> o2 = SomeEntity.class;
        System.out.println(o2.getClass().isAnnotationPresent(Table.class)); // false

        Object o3 = SomeEntity.class;
        System.out.println(o3.getClass().isAnnotationPresent(Table.class)); // false
    }
}
Run Code Online (Sandbox Code Playgroud)

如何获取注释信息?

java reflection annotations supertype

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

Java递归通用模板:这是什么意思... S extends Writer <E >>扩展实体<E,S>

有人可以解释下面的,相当复杂的递归通用模板用法吗?

public abstract class Data<E extends Data<E, S>,
                           S extends Writer<E>> extends Entity<E,S>
Run Code Online (Sandbox Code Playgroud)

在使用递归泛型时我们应该记住什么,如上所述.这些类型之间的关系和规则如何,这里是E&S

如果有的话,请提供一些有关此类通用用法的资源/链接/书籍.我知道有一本书谈论这个,有效的Java,Joshua Bloch的第二版(议题27)

java generics recursion templating

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