Lo de la separacion por capas/niveles está tambien muy presente en Java, lo único es que en la parte de Java se tiende más a tener detectados los errores en tiempo de compilacion, y por eso la mayor parte de las librerias de mapeo objeto-relacional hacen que declares una clase con sus campos etc. equivalente a la tabla.
Si realizas modificaciones en la tabla, hay que cambiar esa clase, cierto, pero si haces como yo o muchos otros que generamos automaticamente la clase a partir de la defincion de la BDD, pues no es tan traumatico
.
Sería interesante un equivalente en Java, para tener las dos opciones, y parece que estan en camino de hacerlo parte de la especificacion JEE bajo el nombre de Service Data Object (SDO).
Otra opcion es usar algo mas dinamico estilo Groovy o JRuby que tienen cosas mas parecidas.
S!