hello.
Java Persistence with Spring Data and Hibernate has been published in Korea, so I am reading it well.
Among the example tests in Chapter 11, there is a noRollback test method as follows, but I am inquiring because it does not seem to be a test of the operation of noRollback.
|
@Test |
|
public void noRollback() { |
|
// no rollback - log message is persisted in the logs even after exception |
|
// because transaction was not rolled back |
|
itemRepository.addItemNoRollback("Item1", LocalDate.of(2022, 5, 1)); |
|
itemRepository.addItemNoRollback("Item2", LocalDate.of(2022, 3, 1)); |
|
itemRepository.addItemNoRollback("Item3", LocalDate.of(2022, 1, 1)); |
|
|
|
DuplicateItemNameException ex = assertThrows(DuplicateItemNameException.class, () -> itemRepository.addItem("Item2", LocalDate.of(2016, 3, 1))); |
|
assertAll( |
|
() -> assertEquals("Item with name Item2 already exists", ex.getMessage()), |
|
() -> assertEquals(4, logRepository.findAll().size()), |
|
() -> assertEquals(3, itemRepository.findAll().size()) |
|
); |
Since noRollback is set in ItemRepository#addItemNoRollback() -> LogRepository#log(), it seems that there must be a scenario where duplication occurs when calling addItemNoRollback().
In the case of ItemRepository#addItem() in the middle, it seems to have no relation to setting noRollback because it is set to REQUIRED_NEW.
So I thought about the following test code:
@Test
public void noRollback() {
itemRepository.addItemNoRollback("Item1", LocalDate.of(2022, 5, 1));
itemRepository.addItemNoRollback("Item2", LocalDate.of(2022, 3, 1));
DuplicateItemNameException ex = assertThrows(DuplicateItemNameException.class, () -> itemRepository.addItemNoRollback("Item2", LocalDate.of(2022, 1, 1)));
assertAll(
() -> assertEquals("Item with name Item2 already exists", ex.getMessage()),
() -> assertEquals(3, logRepository.findAll().size()),
() -> assertEquals(2, itemRepository.findAll().size())
);
// ...
Then, I will finish reading the book. I've read up to chapter 11 now..😅
thank you have a good day. 👍
hello.
Java Persistence with Spring Data and Hibernate has been published in Korea, so I am reading it well.
Among the example tests in Chapter 11, there is a
noRollbacktest method as follows, but I am inquiring because it does not seem to be a test of the operation ofnoRollback.java-persistence-spring-data-hibernate/Ch11/transactions5-springdata/src/test/java/com/manning/javapersistence/ch11/concurrency/TransactionPropagationTest.java
Lines 123 to 136 in 586c212
Since noRollback is set in ItemRepository#addItemNoRollback() -> LogRepository#log(), it seems that there must be a scenario where duplication occurs when calling addItemNoRollback().
In the case of ItemRepository#addItem() in the middle, it seems to have no relation to setting noRollback because it is set to REQUIRED_NEW.
So I thought about the following test code:
Then, I will finish reading the book. I've read up to chapter 11 now..😅
thank you have a good day. 👍