Performance Grails外键更新-性能更新对象

Performance Grails外键更新-性能更新对象,performance,hibernate,grails,gorm,Performance,Hibernate,Grails,Gorm,我正在创建许多对象,并试图获得一点性能提升。目前,我有一个gorm对象属性的赋值,如果我可以手动设置外键,我可以从中获得更好的性能 比如说 def oldBook = Book.findByTitle("Of Mice and Men") def newBook = new Book() newBook.author = oldBook.author //This line could be faster 如果它不必在旧书上查找author对象,那么该行可能会更快。理想情况下,线条看起来更像这

我正在创建许多对象,并试图获得一点性能提升。目前,我有一个gorm对象属性的赋值,如果我可以手动设置外键,我可以从中获得更好的性能

比如说

def oldBook = Book.findByTitle("Of Mice and Men")
def newBook = new Book()
newBook.author = oldBook.author //This line could be faster
如果它不必在旧书上查找author对象,那么该行可能会更快。理想情况下,线条看起来更像这样。(仅供参考,这些实际上不起作用)

在grails中是否可能出现类似的情况?也许这是可能的,但很危险。我使用的是Grails2.2.1版本、Hibernate和Oracle。我唯一的另一个想法是我可以急切地加载author对象

这是你最好的选择:

newBook.author = Author.load(oldBook.authorId)

这利用了动态
fooId
属性,该属性不会触发书籍
Author
实例的加载。使用
load()
方法为
Author
创建一个代理,只存储
id
值,并且只要只访问
id
,就不会命中数据库以完全加载实例。这基本上使代理成为FK值的包装器。

Ahhh是的,非常好。非常感谢!
newBook.author = Author.load(oldBook.authorId)