När du använder en anslutningspool anropar du Connection#close()
stänger inte anslutningen fysiskt utan returnerar den till poolen för framtida återanvändning. Med andra ord, anslutningen förblir öppen och det är hela poängen med att använda en pool.
Det är det som är problemet. Du skapar en SessionFactory
om och om igen (var och en skapar sin egen pool) medan du bör skapa den endast en gång under hela din ansökans livstid. Om du inte använder något speciellt ramverk görs detta vanligtvis i någon verktygsklass (den berömda HibernateUtil
klass).
Den officiella Hibernate Tutorial har ett väldigt grundläggande exempel på en sådan klass. Eller se denna vilket är lite rikare.