小编jav*_*ase的帖子

用于准备语句SLOW的JPA(Hibernate)本机查询

使用JPA背后的Hibernate 3.3.2GA(以及JBoss 5中包含的其余Hibernate包)存在奇怪的性能问题.

我正在使用Native Query,并将SQL组装成预准备语句.

EntityManager em = getEntityManager(MY_DS);
final Query query = em.createNativeQuery(fullSql, entity.getClass());
Run Code Online (Sandbox Code Playgroud)

SQL有很多连接,但实际上非常基本,只有一个参数.喜欢:

SELECT field1, field2, field3 FROM entity left join entity2 on... left join entity3 on
WHERE stringId like ?
Run Code Online (Sandbox Code Playgroud)

并且查询在MSSQL Studio上运行一秒钟.

如果我加

query.setParameter(0, "ABC123%");
Run Code Online (Sandbox Code Playgroud)

查询将暂停9秒

2012-01-20 14:36:21 - TRACE: - AbstractBatcher.getPreparedStatement:(484) | preparing statement
2012-01-20 14:36:21 - TRACE: - StringType.nullSafeSet:(133) | binding 'ABC123%' to parameter: 1
2012-01-20 14:36:30 - DEBUG: - AbstractBatcher.logOpenResults:(382) | about to open ResultSet (open ResultSets: 0, globally: 0)
Run Code Online (Sandbox Code Playgroud)

但是,如果我只是替换"?" 使用该值(使其不是Prepared Statement,而只是一个直接的SQL查询. …

java sql hibernate jpa prepared-statement

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

让JTDS驱动程序接受sendStringParametersAsUnicode = false的问题?

从我的所有应用程序使用net.sourceforge.jtds.jdbc.Driver作为我的MSSQL驱动程序.我在准备好的语句中遇到了性能问题,并了解到sendStringParametersAsUnicode = false应该可以解决问题.不幸的是,我似乎无法让司机接受这个价值.我可以得到Microsoft驱动程序com.microsoft.sqlserver.jdbc.SQLServerDriver接受参数就好了:

jdbc:sqlserver://servername:1433;databaseName=dbname;sendStringParametersAsUnicode=false
Run Code Online (Sandbox Code Playgroud)

在persistence.xml和我的ds.xml中工作.准备好的陈述很快就会在22秒内完成.

但是,我似乎无法从JTDS获得相同的性能提升.它仍然围绕着准备好的语句,每次迭代需要几秒钟.

我在字符串上尝试了几种变体,并且在我的测试中看到了相同的延迟(使用Hibernate.connection.url的persistence.xml)和使用JTA和ds.xml的服务器.

jdbc:jtds:sqlserver://server:1433/dbname;sendStringParametersAsUnicode=false

jdbc:jtds:sqlserver://server:1433;sendStringParametersAsUnicode=false;databaseName=dbname

jdbc:jtds:sqlserver://server:1433;sendStringParametersAsUnicode=false;selectMethod=cursor;socketKeepAlive=true;databaseName=dbname
Run Code Online (Sandbox Code Playgroud)

我读过的所有内容都表明Microsoft驱动程序速度较慢,而且我的公司过去也遇到过问题.如果可能的话,我真的很想使用JTDS,但是不能等待准备好的声明10秒!

有人有什么想法吗?

谢谢

java sql-server hibernate jtds sqljdbc

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

为什么 Swagger + RESTEasy 不能使用 @ApplicationPath("")

环境 = JBoss 7.2.0.Final + RESTEasy 2.3.5.Final + Swagger 1.3.10

尝试设置一个没有 web.xml 的 WAR 并使用 Swagger。如果 ApplicationPath 中有任何值,它就会起作用

@javax.ws.rs.ApplicationPath("test")

@WebServlet(name = "RestEasy-1", loadOnStartup = 1)

@Path("/message")
@Api(value="/message",description="hello api")
Run Code Online (Sandbox Code Playgroud)

适用于 URL

http://localhost:8080/RestEasy-1/test/message/xyz (THE SERVICE)
http://localhost:8080/RestEasy-1/test/api-docs (SHOWS SWAGGER JSON)
http://localhost:8080/RestEasy-1/ (RUNS SWAGGER UI)
Run Code Online (Sandbox Code Playgroud)

但是如果我更改为:

@javax.ws.rs.ApplicationPath("") (also tried /* or * or /)
Run Code Online (Sandbox Code Playgroud)

该服务和 api-docs 有效,但 Swagger 似乎不可用。

我猜想这是与 servlet 根上的侦听器发生冲突,但我有一个预先存在的约束,即服务在根 + 路径上运行,因此我需要一个空白的 ApplicationPath。

知道 Swagger 是否可以设置为手动运行不同的路径吗?

java resteasy jboss7.x swagger

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

Swagger JaxRS可以使用鉴别符进行ApiModel继承吗?

我已经尝试过使用Swagger JaxRs当前主版本1.0和Swagger 2.0的devel_2.0分支。

@ApiModel(value = "Animal", 
  subTypes = {Dog.class, Lion.class}, 
  discriminator = "type")
public class Animal {

    @ApiModelProperty(value = "the discriminator field.")
    private String type;
Run Code Online (Sandbox Code Playgroud)

这是子类之一,

@ApiModel(value = "Lion", parent = Animal.class)
public class Lion {

@ApiModelProperty(value = "the discriminator field.")
private String type;
Run Code Online (Sandbox Code Playgroud)

我没有找到任何期望的例子,但这是我当前的Swagger 2.0项目swagger.json文件中的输出。

   "definitions":{
      "Animal":{
         "properties":{
            "type":{
               "type":"string",
               "description":"the discriminator field."
            }
         },
         "discriminator":"type"
      },
Run Code Online (Sandbox Code Playgroud)

定义中没有Dog或Lion对象的迹象。请求对象中没有任何内容。我不确定这是否会奏效,但是如果您知道它应该如何运作,请告诉我。

如果要查看完整的上下文,所有代码都在这里。

https://github.com/javatestcase/RestEasy/tree/RestEasyVersion2

jax-rs resteasy swagger

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