I follow a very simple rule:
DTO is more or less a transfer from one domain to another. This means that I use DTO when I have a physical separation between two layers.
Meaning in case you have a JSP, you can use the OpenSessionInView template to avoid a lot of work on model translation, etc.
source share