Yes its a persistance layer specifically created to try to solve the old Object Relational Impedence Mismatch problem (i.e. using a relational model in conjunction with an object oriented one). You can use it with any Java app, its not restricted to J2EE. No it could not be considered a replacement for EJBs, being only a persistance layer. You could consider it a replacement for Entity Beans though.