Writing information to /dev/null is a waste of everyone's time.
If you are going to have entities whose lifecycles extend beyond a single executable session, then you need to have some mechanism for copying information from the transient data representation to a durable data representation, and vice versa.
The most straight forward approach is to use the Factory pattern (as described in Chapter 6 of the blue book). The obvious variation is described there - our persistence layer has some information, and we pass that information to a factory, and it returns to us a handle to a transient entity assembled from that information.
The same variation works in reverse - we pass a factory to the domain entity, the domain entity passes a copy of its transient data to the factory, and then returns to the caller whatever the factory produced.
In a language with generics, your design might look like
public class Order {
public interface SomeFactory<T> {
T build(OrderId id, Array<LineItems> items);
}
public <T>
T verb(Order.SomeFactory someFactory) {
return someFactory.build(this.id, copy(this.items));
}
}
Then, at some location convenient to your OrderRepository, you create an implementation that extends Order.SomeFactory and uses the information to produce a representation of the information that you need to store the data correctly.
Note: you won't find anything like this in the blue book, as far as I can tell, because (a) Evans was assuming O/RM and (b) at the time it was written Java didn't have generics.