Can I define Java classes based on a relational view ?
Yes. You may want to do so if, for example, a complicated join statement or a select statement with aggregations gives exactly what you want. Just use the name of the view in place of the table name in object-relational mapping specification for that class. Of course, you may not be able to update (in the database) the objects of those classes if the underlying view is not updateable.