The classic case discussed for branch by abstraction is the changing of one persistence technology for another. In the original article⇩ for this, it was swapping out Java’s ‘Hibernate’ technology for ‘iBatis’ (now MyBatis). That was hypothetical for the blog entry.