If you ever wondered how to generically handle NotSerializableException the easy way, or whether is it possible to have final transient fields that work correctly, I wrote an article about this.
Using Jakarta EE, Jakarta Faces, PrimeFaces, OmniFaces and put it all together with JPAFinder and JPALazyDataModel from FlowLogix.
Tests using TestContainers with Arquillian/Graphene and Selenium.
Very few lines of code or setup required. Developer productivity at its finest