Programmatic configuration is powerful, there are many options you can use (shouldn't need all of them) :
Code:
new org.hibernate.cfg.Configuration.Configuration()
   .addDirectory( File directory ) //search all hbm.xml files from a directory
   .addJar( File jar ) //searches all *.hbm.xml files in the jar and adds them to configuration
   .addFile( File xmlFile ) //adds mapping from a specific file
   .setProperty( Environment.DRIVER, "jdbc driver name" )
   .setProperty( Environment.URL, "jdbc url" )
   .setProperty( Environment...., "more options )")
   .buildSessionFactory();
I think you could define some convention which is most practical for you use case.
Maybe some properties can be hard-coded in such a 
SessionFactory factory, but you could read some options from you own configuration properties file.