JPA本身并不关心集合是否已初始化。当使用JPA从数据库中检索订单时,JPA将 始终 返回带有非空OrderLine列表的Order。
原因:因为一个订单可以有0行,1行或N行,并且最好用一个空的,一个大小或N个大小的集合进行建模。如果集合为空,则必须在代码中的所有位置进行检查。例如,如果列表为null,则此简单循环将导致NullPointerException:
for (OrderLine line : order.getLines()) { ...}因此,即使对于新创建的实体实例,也总是要具有非null集合,以使该变量不变。这使得创建新订单的生产代码更安全,更清洁。这也使使用不来自数据库的Order实例的单元测试更安全,更干净。



