In our order management application the Order class has only fields with getters and setters, and an OrderService of about 1500 lines does everything else: calculates totals, checks whether a status change is allowed, calls the payment provider and sends emails. A senior colleague says logic belongs in services and models should stay plain. A book I am reading calls exactly this an anemic domain model and an anti-pattern.
Which is right, and is there a practical rule for deciding where a given piece of logic should go?




