This question was asked in a similar way earlier. The simple answer is: Play uses statics where appropriate.
The HTTP model is not an OO model. HTTP requests themselves do not have a status, so static methods allow you to access controllers as functional requests from client code.
Model classes, on the other hand, are pure OO and, as a result, are not static. Some of the utility methods, such as findAll or findById, are static, but again they are not statefull and are utility methods for the class. In any case, I would expect this in the standard OO model.
Therefore, I do not think that there are any risks in doing what Play expects. This may seem strange because it challenges the norm, but it does so for reasonable reasons.
source share