Hibernate and eclipselink are the most popular DAL frameworks for Java. From what I understand they map object that the programmer created to database relations and stored procedures that are created automatically.
What are the pros and cons of using this method versus:
Writing your own DAL, assuming my project is small-medium sized.
Finding a framework (if exists ?) that will it the other way - create classes from database relations and stored procedures.
Personally, I feel more comfortable with reasoning about database relations rather than Java (or any programming language) classes.
Your understanding of JPA is wrong. JPA (of which Hibernate and EclipseLink ar two implementations) is an ORM: Object Relational Mapper. Some prefer designing Java objects and deduce the database schema from these objects. Others prefer designing a database schema, and deduce Java objects from this schema.
Both approaches are possible, and JPA doesn't assume any of those approaches. It specifies how Java objects and their associations can/must be mapped to tables.
Advantages over writing your own DAL:
Advantages over finding a framework which creates classes from database relations: