I have read the documentation and explanation on why it is highly recommended to use transactions on read operations in NH. However, I still haven\'t totally \"bought\" into
var fooIdFromDb = ExecuteQuery("Select Id from Foo where something = somethingelse");
var barsFromDb = ExecuteQuery("Select * from Bar where FooId = " + fooIdFromDB);
What if some other transaction deletes rows from Bar between the two queries? You will have issues with phantom data. This is not an NHibernate specific issue. You will have the same problem with any other kind of database access without using transactions. You should read the manual about transactions in general instead of the NHiberante manual.