An Introduction to Java Persistence for Client-Side Developers