У меня есть проблема, которую я затронул в другом вопросе, но это более крупный вопрос:
В проекте Grails по умолчанию, использующем STS, есть Spring/Hibernate. Когда приложение Grails загружается, кажется, что моя база данных, состоящая из более чем 100 000 объектов предметной области, загружается в память. Я понятия не имею, находится ли это на уровне Hiberate/ORM.
Pre DB domain object load (400 MB start up)
Post DB domain object load (900 MB start up)
Это без каких-либо данных загрузочного ремня. Нет производительности приложения из коробки. Просто чистый запуск и мои объекты домена.
Я могу использовать мониторы, но получаю те же ответы. Похоже, это конфигурация. Как настроить Hibernate в Grails, чтобы эти объекты не загружались в память?
Это файл datasource.groovy:
dataSource {
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
username = "xxx"
password = "xxx"
}
hibernate {
cache.use_second_level_cache = false
cache.use_query_cache = true
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost/mydb"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost/mydb"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost/mydb"
}
}
}
Это убивает меня, потому что я пробовал все типы настроек для запуска файлов (загрузочная планка, источник данных / спящий режим, конфигурация и т. Д. - я даже не могу вспомнить все, что я пробовал).
* Изменить * Я не использую активную выборку для своих объектов. Просто лень по умолчанию.