Not sure, but why are you using a transaction if all you are doing is querying the database?
Also, you probably want to release your Session after using it (unless you are only using one I guess).
Sorry, about that. The JoinColumn will perform an SQL join with the Module table when you load the Customer data. So that will allow Hibernate to load the data for both of the classes with a single select query.
Be careful with the Lazy load though. You will get an LazyInitializationException if you need the information inside the Module, but no longer are within the scope of the session that you are using.