The big thing to Java EE 5 and EJB3 is that now you can send the domain objects to the client. Before EJB 3 Entity Beans were not Serializable, so we create the dreaded DTO Antipattern. Now we have our "Entity Beans" as POJOs so they can be Serializable and sent to the client. That is the best practice. And if you have a version field, you can re-attach these detached objects with optimistic locking.