Тестирование JPA со Spring Data
От: Аноним  
Дата: 06.10.13 22:34
Оценка:
Добрый день,

Тестовый сервис:

public interface BookService {
    Book findById(long id);
    Book save(Book book);
}


Spring Data Helper Interface
public interface BookRepository extends CrudRepository<Book, Long> {
}


Реализация BookService:

@Service("bookService")
@Repository
@Transactional
public class JpaBookRepository implements BookService {

    @Inject
    private BookRepository bookRepository;

    @Override
    public Book findById(long id) {
        return bookRepository.findOne(id);
    }

    @Override
    public Book save(Book book) {
        return bookRepository.save(book);
    }
}


В тесте создаю Book:

        Book book = new BookBuilder()
                .title("New Test Book")
                .author("Pushkin")
                .year(2012)
                .price(new BigDecimal(123.2D))
                .build();
        assertEquals("Book ID is not assigned", 0L, book.getId());
        bookService.save( book );
        assertNotEquals("Object ID is persistent", 0L, book.getId());


Сохранненный book хочу получить из базы. Для этого надо вызывать entityManager.flush(); entityManager.clear();
Но я не работаю напрямую. Если EntityManager — по аналогии — это коннектор к базе, то использование в тесте чего то типа:

    @PersistentContext
    private EntityManager entityManager;


Даст мне доступ к entityManager, у которого будет свой PersistentContext, ничего не знающий об managed entity — book.
Какие опции у меня имеются в этом случае? Как лучше сделать, чтобы сохранить в базу и для сверху, получить сохраненную сущность из базы, а не из PersistentContext?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.