Hi all.
In my project I'm trying to use rich domain model. For example, I have a User class which is annotated with @Configurable so I can inject UserDao into it:
This gives the possibility to invoke methods likeCode:/** * User Entity. */ @Entity @Table(name = "users") @Configurable public class User implements Serializable { /** * Default no-arg constructor. */ public User() { } public User(String username, String password, boolean enabled) { this.password = password; this.enabled = enabled; this.username = username; } @Id @GeneratedValue private Integer id; public Integer getId() { return id; } @Column(nullable = false, unique = true) private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Column(nullable = false) private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Column(nullable = false) private boolean enabled; public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } /** * Autowired UserDao instance. */ @Autowired @Transient transient private UserDao userDao; public void save() { userDao.save(this); } public void delete() { userDao.delete(this); } }
in pure object-oriented style. I really like this approach but I do not understand where should I better place methods like getByUsername(...) etc. My Services layer invokes methods on entities and doesn't now about any DAOs. So how is better to handle this? Inject DAOs into Services or invent something like UserFactory.getByUsername(...)?Code:user.save(); user.delete();
Any suggestions?
Regards,
Alexander


Reply With Quote
), it is very arguable that Anemic Domain Model is necessarily anti-pattern.