Criteria y Detached criteria
Detached criteria y criteria funcionan igual pero detached criteria no necesita una sesión para construir el query mientras que criteria si necesita una.
Detached criteria se utiliza para construir queries por ejemplo dentro de una propiedad estática dentro de una clase (no hay una sesión), o dentro de un método de utilería (no hay una sesión).
Criteria se utiliza en métodos donde existe una sesión.