Just wondering if beginning a new transaction in Hibernate actually allocates a connection to the DB?
I’m concerned b/c our server begins a new transaction for each request received, even if that request doesn’t interact with the DB. We’re seeing DB connections as a major bottleneck, so I’m wondering if I should take the time narrow the scope of my transactions.
Searched everywhere and haven’t been able to find a good answer. The very simple code is here:
SessionFactory sessionFactory = (SessionFactory) Context.getContext().getBean("sessionFactory");
sessionFactory.getCurrentSession().beginTransaction();
sessionFactory.getCurrentSession().setFlushMode(FlushMode.AUTO);
thanks very much!
a
(Updated per Pascal Thivent’s comment)
Each
Sessioncreates a database connection if there is a need for that – e.g. if a transaction is started. The connection is not opened with the mere creation of the session.To overcome this, you can use a connecetion pool so that connections are reused. Or you can make sure (as it appears you did) that no transaction is started automatically.
(This discusses read-only transactions. Take a look.)