Como he estado usando Grails cada vez más, me encuentro escribiendo código en varios controladores que realmente parece que debería ser parte de una clase de dominio. A veces, este código de dominio contiene una llamada a una clase de servicio. Por ejemplo, hace poco escribí un método de dominio que parecía algo como esto:¿Es malo llamar a los servicios de Grails desde objetos de dominio?
class Purchase {
// Injected
def paymentService
String captureTransactionId
Boolean captured
// ...
def capture() {
captureTransactionId = paymentService.capturePurchase(this)
captured = captureTransactionId != null
}
no me siento la escritura de plano sucio este código, pero no he hecho un estudio de las mejores prácticas de diseño en Grails, por lo que quería obtener algunas opiniones
Un último comentario: ¿cuándo se inyectan los servicios? Por ejemplo, si carga 10,000 Compras desde una base de datos, ¿se inyectará el PaymentService en ellas? El rendimiento sufrirá significativamente. – wishihadabettername
@ User277434 - Hibernate en realidad no está destinado a hacer este tipo de carga por lotes. Si tuviera tantos registros para cargar de una vez, podría omitir el uso de hibernación, o usar una consulta con una proyección para evitar la creación del objeto. –