小编moj*_*-de的帖子

间隔:如何确保表中的timstamp列中只有一行具有空值?

我有一个包含一个'有效直到'日期的列的表,我想确保只能在表中的一行中将其设置为null.是否有捷径可寻?

我的表看起来像这样(postgres):

CREATE TABLE 123.myTable(
some_id integer NOT NULL,
valid_from timestamp without time zone NOT NULL DEFAULT now(),
valid_until timestamp without time zone,
someString character varying)
Run Code Online (Sandbox Code Playgroud)

some_id而且valid_from是我的PK.我希望没有人在列valid_until中输入一个空值的行,如果此PK已经有一行为null.

谢谢

sql postgresql null constraints range

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

什么时候连接返回到JPA应用程序中的连接池?

如果我调用,连接仅返回到JPA应用程序中的连接池

entityManager.close();
Run Code Online (Sandbox Code Playgroud)

支持实体经理的连接在其生命周期中是否会发生变化?

感谢提前mojoo

java database-connection jpa connection-pooling entitymanager

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

使用@batchsize后jpa性能崩溃

我有一个java jpa/hibernate应用程序需要获取大量数据来执行其任务.我遇到了n + 1问题,所以我决定使用hibernate.default_batch_fetch_size(@batchsize)属性来降低所需的sql往返.我尝试了一些值但性能随着几乎所有尝试过的值而崩溃.

batchsize:0 - sqls发送:14000 - 持续时间:约1分钟

batchsize:4 - sqls发送:5000 - 持续时间:超过10分钟

batchsize:10 - sqls发送:2700 - 持续时间:约5分钟

batchsize:100 - sqls发送:400 - 持续时间:约1分钟

这是一种"正常"行为吗?如果不是什么可能是错误?

我用log4jdbc记录了生成的sql.我注意到每个批次声明之间的差距大约为100-150毫秒.如果我稍后运行sql,则每个语句的运行时间不超过20毫秒.所以这不是一个与DB(IN语句)相关的问题.

Java:1.6.0_31,Hibernate 3.6.7,DB Postgres 9.1.1,JDBC postgresql-9.1-901.jdbc4.jar

提前致谢

更新以使事情清楚:性能损失是在批量提取期间而不是批量更新/插入

java performance hibernate jpa

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