В моем приложении grails (1.3.7) я использую шаблон JDBC для массового импорта 1000-х записей из файла CSV (поскольку он намного быстрее, чем использование ванильного GORM/hibernate, как и следовало ожидать).
например.
class Book {
String title
}
и
// For each CSV record...
insertStatementList.add("insert into book (id, title) values (nextval('hibernate_sequence'), thetitle)")
...
JdbcTemplate bulkInsert = ...
bulkInsert.batchUpdate(insertStatementList)
Проблема с этим подходом заключается в том, что изменение класса домена (например, добавление атрибута subject
) требует изменения как для класса домена, так и для инструкции SQL insert.
Так как стек GORM/hibernate должен в конечном итоге выводить SQL из определения класса домена, есть ли способ получить доступ к этой функции, так что мне не нужно отдельно поддерживать инструкцию SQL insert? Или в псевдокоде есть что-то вроде следующего:
// would return something like:
// "insert into book (id, title) values (nextval('hibernate_sequence'), 'thetitle')"
def insertStatement = hibernate.getSqlInsertForClass(Book, book.properties)