В моем приложении весной я хочу вставить почти 1500 записей в базу данных за один раз. Я использую Spring 4.X и простой спящий режим в backend. В моем сервисе я использую аннотацию @Transactional. Теперь, вставляя записи после некоторой точки, я получаю ошибку outofmemory. После поиска в Интернете я узнал, что мы можем использовать что-то подобное этомуПакетные вставки с аннотацией @Transactional
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for (int i=0; i<100000; i++) {
Customer customer = new Customer(.....);
session.save(customer);
if (i % 20 == 0) { //20, same as the JDBC batch size
//flush a batch of inserts and release memory:
session.flush();
session.clear();
}
}
tx.commit();
session.close();
Однако, приведенный выше код они используют SessionFactory и транзакции вручную и использовать флеш и ясно на объект сессии и сделать я ручной фиксации.
В моем случае я не хочу использовать вышеприведенный код, я хочу использовать аннотацию @Transactional, чтобы сделать эту работу.
Пожалуйста, предложите
Я не хочу использовать сессионный фабрику и объект транзакции вручную. .... @ транзакционной должны делать это все
Какова ваша конфигурация весны xml? –
Просто удалите сеансовую передачу (используйте 'sessionFactory.getCurrentSession' и оставьте' flush' и 'clear'. –
Означает ли это, что в моем коде мне нужно принудительно использовать sessionFactory вручную? Не могу ли я использовать аннотацию @Transactional? – user3534483