Я хочу сделать приложение для тестирования студентов на стеке Spring MVC, Spring DataJPA, Hibernate.
Тестирование будет не совсем обычное. Когда студент начинает тест, для него формируется массив вопросов. Если студент неправильно отвечает на какой-то вопрос, то в конец этого массива должны добавляться ещё вопросы по этой теме.
Пример:
Студент начинает тестирование по теме "Кошки". Формируется массив со следующими вопросами:
"Кошки мяукают?"
"У кошек бывают котята?"
"Кошки едят грибы?"
Студент правильно ответил на вопрос "Кошки мяукают?". Потом студент неправильно ответил на вопрос "У кошек бывают котята?", поэтому в конец массива добавляются углублённые вопросы по этой теме, теперь массив выглядит так:
"Кошки мяукают?" // Ответил верно
"У кошек бывают котята?" // Ошибка!
"Кошки едят грибы?"
"Котята бывают у кошек?" // Добавлено после ошибки
"Котята - это кошки?" // Добавлено после ошибки
Таким образом тест разрастается, если студент допускает много ошибок, что позволяет найти самые первые пробелы в теме.
У меня возник вопрос к реализации такой системы. Получается, что где-то должны храниться список вопросов, в который должны добавляться новые вопросы, в случае, если студент допускает ошибку. Насколько я понимаю, я должен привязать этот список к сессии. Возможно ли вообще хранить список вопросов прямо в сессии? Просто в каждый конкретный момент времени студенту нужен только один вопрос, а если я буду в сессии хранить весь список вопросов, то не будет ли это слишком нагружать систему?
Если такой список возможно хранить прямо в сессии, то к каким классам / методам мне обращаться для реализации этого?