我需要能够在内存中的HSQL数据库中以每5秒至少8000个对象的一致速率插入/更新对象.
我在Spring/Hibernate/JPA和纯JDBC之间做了一些比较性能测试.我发现使用HSQL在性能方面存在显着差异.使用Spring/Hib/JPA,我可以在5秒内插入3000-4000的1.5 KB对象(具有One-Many和Many-Many关系),而直接使用JDBC调用我可以插入10,000-12,000个相同的对象.
我无法弄清楚为什么会出现如此巨大的差异.我已经调整了Spring/Hib/JPA设置,试图在没有运气的情况下接近性能.我想将Spring/Hib/JPA用于未来目的,可扩展性,并且因为外键关系(一对多和多对)难以手工维护; 但性能要求似乎指向使用纯JDBC.
有什么想法会出现这么大的差异吗?
我注意到许多开源项目继续使用邮件列表代替论坛.我个人发现的邮件列表是繁琐而神秘,使其更难解决/讨论与雇用他们项目的技术问题.我是否错过了邮件列表的一些继承优势,或者它们是不合时宜的?
只是为了澄清,这不是"一般来说邮件列表有什么用处"的问题.我刚刚注意到它们很常用于软件开发项目,而互联网的其他部分似乎已经开始了.那么使用邮件列表进行软件开发有什么好处呢?
有没有办法在不编辑实体对象的情况下在单个方法上更改JPA fetch类型?
我有一个由JPA实体类组成的共享ORM层.该ORM层由两个DAO层访问.一个DAO需要延迟抓取,因为它适用于我的Web应用程序,另一个需要急切的抓取,因为我需要它是线程安全的.
这是我的线程安全DAO的示例方法,
@PersistenceContext(unitName = "PersistenceUnit", type = PersistenceContextType.TRANSACTION)
private EntityManager em;
public ErrorCode findErrorCodeById(short id) {
return (ErrorCode) em.createNamedQuery("ErrorCode.findById").
setParameter("id", id).getSingleResult();
}
Run Code Online (Sandbox Code Playgroud)
我如何使这个方法(或整个类)使用渴望获取?
我想问一下Clojure上有哪种类型的安全语言?
我现在已经多次读过Luke VanderHart和Stuart Sierra的'Practical Clojure',但我仍然有一个明显的印象,即Clojure(和其他lisps一样)不会非常认真地对编译时验证进行检查.类型安全只是一种(非常流行的)策略,用于对正确的语义进行编译时检查
我问这个问题,因为我很难被证明是错的; 什么样的设计模式可用于clojure(在编译时,而不是在运行时)验证期望字符串的函数不会被调用,例如,整数列表?
此外,我读过非常聪明的人,比如Paul Graham公开提倡lisp允许在它之上实现低级语言的所有内容(大多数人会说语言本身正在重新实现),所以如果那个断言这将是真的,然后像类型检查这样简单的东西应该是小菜一碟.所以你觉得在clojure或其他lisps中存在类型系统(或实现这种类型系统的能力),这使得程序员能够将验证检查从运行时间偏移到编译时,甚至更好,设计 - 时间?
static-analysis compiler-errors clojure type-safety compilation-time
我试图在应用程序中第一次使用Spring.反复出现的一般问题是如何调试Spring.该框架配置繁重,因此传统的代码调试似乎毫无结果.我不知道如何在没有打开调试级别日志(缺少)和扫描的情况下进行故障排除.
是否有任何常规技巧或工具可以帮助Spring调试?
如果您需要在一个方法中返回两件事,那么最好的方法是什么?
我理解一个方法应该只做一件事的理念,但是说你有一个运行数据库选择的方法,你需要拉两列.我假设您只想遍历数据库结果集一次,但是您想要返回两列值的数据.
我提出的选项:
我正在尝试编写一个Dictionary独立于Key/Value数据类型的扩展.我尝试使用object数据类型传递它,假设它适用于任何类型.
我的代码:
public static class DictionaryExtensionsClass
{
public static void AddFormat(this Dictionary< ?? unknow type/*object*/, ??unknow type/*object*/> Dic, ??unknow type/*object*/ Key, string str, params object[] arglist)
{
Dic.Add(Key, String.Format(str, arglist));
}
}
Run Code Online (Sandbox Code Playgroud) 如果我有一个商店支持的组合框选择在ExtJS 4下触发事件,我该如何获得由该选择表示的完整对象?
我的Grails服务存在一个问题,即与事务无关的吞没异常导致事务回滚,即使它与域对象的持久性无关.
在我的服务中,我有一些东西
updateSomething(domainObj) {
def oldFilename = domainObj.filename
def newFilename = getNewFilename()
domainObj.filename = newFilename
domainObj.save(flush: true)
try {
cleanUpOldFile(oldFilename)
} catch (cleanupException) {
// oh well, log and swallow
}
}
Run Code Online (Sandbox Code Playgroud)
我所看到的是,当我清理旧文件时遇到异常,我记录它并吞下它,但它仍然导致事务回滚,即使我已经完成了更新域对象.
如何在清理之前限制范围事务完成,或者是否有其他方法可以使清理异常不导致回滚?
只是为了记录我使用Grails 2.1.1
jpa ×2
spring ×2
c# ×1
clojure ×1
dao ×1
debugging ×1
dictionary ×1
extjs ×1
extjs4 ×1
go ×1
grails ×1
grails-orm ×1
hibernate ×1
ide ×1
java ×1
jdbc ×1
mailing-list ×1
performance ×1
persistence ×1
return-value ×1
text-editor ×1
transactions ×1
type-safety ×1