If I have code that looks like the following:
beginTransaction(); // lots of stuff happens, can take anywhere from a minute to several minutes. // it will read f
The best thing is to keep transactions short. The locking semantics depends on the transaction isolation levels though.
Open Session In View is the pattern your are looking for when you are talking about lazy-fetching/relationships.