In a Java/Spring MVC/Hibernate application I have model objects that contain references to other model objects where the database has foreign keys.  So for example, I might have:@Entity@Table(name=branches)public class Branch {    @Id    @GeneratedValue    @Column    private int id;    @Column    private String name;    // ...}@Entity@Table(name=clients)public class Client {    @Id    @GeneratedValue    @Column    private int id;    @Column    private String name;    @ManyToOne    @JoinColumn(name=branch_id)    private Branch branch;    // ...}Spring MVC can't easily handle binding request parameters to an object that has references that would need to be pulled in from the database, eg if a form produces fields:name=John Smithbranch=43Spring MVC has no easy way of converting that 43 to a filled-out Branch object. To get around this, I create a new class that contains the data required by forms that handle each type (typically this ends up being all the fields from the original class, but sometimes one or two fields that are only used internally or aren't edited by forms get missed out) except that references to other model objects are translated into keys that can be looked up manually. I then add methods to convert to or from the model class.  For example:public class ClientWithKeys {    private int id;    private String name;    private int branch;    // ...    public Client toClient (IntFunction<Branch> branchSource) { ... }    public static ClientWithKeys fromClient (Client c) { ... } }Controller code is then simply: @RequestMethod(/whatever) public ModelAndView frobnicateClient (@Valid ClientWithKeys clientWithKeys) {     Client client = clientWithKeys.toClient (clientRepository::getClientById);     ... }I've been calling these objects Data Transfer Objects, but my attention was recently drawn to the fact that the canonical reference for that name describes a different purpose for the pattern than the purpose for which I've been using these objects.  Is actual usage of the name broad enough to cover what I'm doing, or is there a better name I could be using to describe this?
Should I call this a DTO or something else?
design patterns;terminology;dto
The term I think would be most applicable would be view model. It is a model specifically for the view separate from the domain model.