Hola:
Depende de la aplicación y lo que vayas a hacer con todo eso. Lo normal es dejarlo en lazy de forma que no te traiga todo por defecto (puedes llenar la memoria si tienes muchos datos y te descuidas).
Luego, cuando vayas a hacer una consulta concreta, decides si necesitas traerte todos los elementos de la relación o no y antes de cerrar la sesión los traes (basta con acceder a la lista de item relacionados para que hibernate la traiga), luego ya puedes cerrar la sesión sabiendo que esos datos están cargados. No sé si el exactamente así, pero sería algo como esto
crear sesion
maquina = sesion.consulta maquinas
maginas.getReparaciones().size() // esto inicializa la lista de reparaciones
sesion close
Echa un ojo también a
http://docs.jboss.org/hibernate/orm/...rformance.html donde dice que Hibernate..initialize( maquina.getReparaciones() ) hace lo mismo pero queda el código un poco más claro (deja claro que es una inicialización y no una línea que aparentemente no hace nada).
La otra opcíon si controlas de base de datos, join y demás, es posible hacer la consulta concreta de forma que te traiga los elementos ("forzando" el eager aunque sea lazy por defecto), por ejemplo, si usas HQL, puede ser como esto (join fetch)
List list = session.createQuery(
"select c from Customer c left join fetch c.orders o " +
"left join fetch o.paymentMethod p").list();
o bien con la api de criteria en vez de HQL
List list = session.createCriteria(Customer.class)
.setFetchMode("orders", FetchMode.JOIN).list();
He sacado ambos trozos de código de aquí
http://www.basilv.com/psd/blog/2008/...g-in-hibernate
Se bueno.