Packagecom.yh.entity;Importorg.hibernate.Session;Importorg.hibernate.SessionFactory;Importorg.hibernate.cfg.Configuration; Public classHibernateutil {//Initializes a Threadlocal object Private Static FinalThreadlocal<session> Sessiontl =NewThreadlocal<session> ();//1 Private Staticconfiguration configuration; Private Final Staticsessionfactory sessionfactory; Static { Try{Configuration=NewConfiguration (). Configure (); Sessionfactory=configuration.buildsessionfactory (); } Catch(Throwable ex) {ex.printstacktrace (); Throw NewExceptionininitializererror (ex); } } Public StaticSession currentsession () {//The Get () method of the Sessiontl returns its corresponding thread internal variable according to the current thread .//that is, we need the session, multi-threaded case of the sharing of database links is not secure. //threadlocal ensures that each thread has its own session. Session Session = (session) Sessiontl.get ();//2//if session is NULL, a new session is opened if(Session = =NULL) {//3//Create a database connection object session. Session = Sessionfactory.opensession ();//4//Save the database connection session to threadlocal. Sessiontl.set (session);//5 } //if the current thread has accessed the database,//a Get () from Sessiontl can get the database connection object that the thread last fetched. returnSession//6 } Public Static voidCloseSession () {Session session= (Session) sessiontl.get ();//2Sessiontl.set (NULL); if(session!=NULL) Session.close (); }}
Establish a connection with the database, open session, and close session, each time can be used directly
Hibernateutil is written mainly to establish a database connection.