Хотя я не уверен, что правильно понял ваш вопрос, я не знаю, в чем может быть проблема с сериализуемым прослушивателем событий.
Прослушиватель событий должен быть реализован так, как если бы он был одноэлементным, и он не должен содержать состояния в переменных экземпляра.
Так что сериализация не должна быть проблемой.
DAO не может быть сериализован (по понятным причинам).
Если у вас действительно есть прослушиватель событий со ссылкой на DAO, пометьте переменную экземпляра DAO как временную. Когда вы используете DAO, проверьте на нулевое значение, и если null, получите соответствующий DAO от DAOFactory.