// pm is a product manager object which handles actual database calls
Product product = pm.findProduct( 1 );
List<Product> products = pm.findAllProducts();
products.stream().forEach( System.out::println );
pm.update( product ); // pm object delegates by calling merge on an entity manager object
products = pm.findAllProducts();
products.stream().forEach( System.out::println );
Оба оператора println
выводят одинаковое количество записей без каких-либо изменений.Поскольку в product
управляемом объекте нет изменений состояния,
- Будет ли поставщик сохраняемости (PP) по-прежнему отправлять его в базу данных для обновления?Укажите оба случая: когда кэш второго уровня используется и не используется.
- Если нет, как PP определяет изменения?
- Если да, то как нет разницы во втором выводе, какЯ точно знаю, что база данных обновила запись?IOW, как я могу определить, что база данных выполнила оператор обновления?
EDIT: добавлен тег 'derby'.