I guess it started with J2EE and entity beans - people started creating lots of lovely domain classes and obediently created getter and setter functions for the data (good OO practice as we all know). But they totally forgot about bunching object behaviour together in the same class. Instead we often see "Service Layers" above the Domain Layer which implement all logic.
It's suprising how many text books and tutorials are out there advocating this approach. In addition, DI containers such as Spring give you a strong nudge in that direction. For example, you'll more than likely want to perform CRUD operations on your objects. For this you'll require some kind of session/entity manager and you'd like this to be injected into your object by the container. And for this to happen the object needs to be managed by your container. Ah, problem - typically domain objects are application managed. So people end up with Singleton Service or DAO objects which are managed by the container, injected with the session/entity manager and do all the CRUD operations, etc on their respective domain objects. It can be argued that is not proper OO. It should be noted however that people's opinons do differ:
There is a solution. It's used in the Spring Roo generated classes and is explained in the link below. Be warned, it involves Load Time Weaving
: