Desde el foro de Hibernate :
Esto del libro Hibernate in Action. Bueno, lee esto ..
Recuperar objetos por identificador El siguiente fragmento de código de Hibernate recupera un objeto Usuario de la base de datos:
User user = (User) session.get(User.class, userID);
El método get () es especial porque el identificador identifica de forma única una sola instancia de una clase. Por lo tanto, es común que las aplicaciones usen el identificador como un identificador conveniente para un objeto persistente. La recuperación por identificador puede usar el caché al recuperar un objeto, evitando un acierto en la base de datos si el objeto ya está en caché. Hibernate también proporciona un método load ():
User user = (User) session.load(User.class, userID);
El método load () es más antiguo; get () se agregó a la API de Hibernate debido a la solicitud del usuario. La diferencia es trivial:
Si load () no puede encontrar el objeto en la caché o la base de datos, se lanza una excepción. El método load () nunca devuelve nulo. El método get () devuelve un valor nulo si no se puede encontrar el objeto.
El método load () puede devolver un proxy en lugar de una instancia persistente real. Un proxy es un marcador de posición que activa la carga del objeto real cuando se accede a él por primera vez; Por otro lado, get () nunca devuelve un proxy. Elegir entre get () y load () es fácil: si está seguro de que el objeto persistente existe y la inexistencia se consideraría excepcional, load () es una buena opción. Si no está seguro de que haya una instancia persistente con el identificador dado, use get () y pruebe el valor de retorno para ver si es nulo. El uso de load () tiene una implicación adicional: la aplicación puede recuperar una referencia válida (un proxy) a una instancia persistente sin llegar a la base de datos para recuperar su estado persistente. Por lo tanto, load () podría no lanzar una excepción cuando no encuentre el objeto persistente en la caché o la base de datos; la excepción se lanzaría más tarde, cuando se acceda al proxy. Por supuesto, recuperar un objeto por identificador no es tan flexible como usar consultas arbitrarias.