In general everything that refers to the data must be done in the model, although indirectly. Any operations that manipulate the data should be in the model.
Then the method of inserting that data must be placed in the same model. And you can put the detail out of it, as was done in this example.
I guess the question is whether the controller should do the whole implementation of the insert and should not generally.
Each with its own responsibility. The controller should tell you what to do and not how to do it.
I had not paid attention initially, but the Cliente c = new Cliente();
line does not do what it imagines. You are creating another object within the object you are manipulating. This should not be done unless you have a reason to have a new customer inside the client, which is highly unlikely.
It is not this client that you should use to write the template, it is this
.
I find it odd to create a new client in invalid state .
And I do not think this DAO is well built. I actually question the use of specific DAO so, but that's another matter.