Getting the java.sql.Connection object using Session:
---------------------------------------------------------------------------
org.hibernate.Session is nothing but get the one physical connection from the database.
By using Session we can get the Connection object several ways.
1) session.connection() - this method is deprecated. it is not available on Hibernate4.
2) session.doWork() - this method doesn't return Connection object, but inside what ever operation we want to do using connection object we can do.
3) session.doReturningWork() - this method returns dynamic type value. In the below example i am return Connection object.
4) SessionImpl.connection() - Down casting the Session object to SessionImpl. By using SessionImpl we will get the Connection object.
5) ConnectionProvider.getConnection() - Using ConnectionProvider getConnection() method.
Full Example:
package com.varasofttech.client;
import java.sql.Connection;
import java.sql.SQLException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.internal.SessionImpl;
import org.hibernate.jdbc.ReturningWork;
import org.hibernate.jdbc.Work;
import com.varasofttech.util.HibernateUtil;
public class Application {
public static void main(String[] args) {
// Different ways to get the Connection object using Session
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
// Way1 - using doWork method
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
// do your work using connection
}
});
// Way2 - using doReturningWork method
Connection connection = session.doReturningWork(new ReturningWork<Connection>() {
@Override
public Connection execute(Connection conn) throws SQLException {
return conn;
}
});
// Way3 - using Session Impl
SessionImpl sessionImpl = (SessionImpl) session;
connection = sessionImpl.connection();
// do your work using connection
// Way4 - using connection provider
SessionFactoryImplementor sessionFactoryImplementation = (SessionFactoryImplementor) session.getSessionFactory();
ConnectionProvider connectionProvider = sessionFactoryImplementation.getConnectionProvider();
try {
connection = connectionProvider.getConnection();
// do your work using connection
} catch (SQLException e) {
e.printStackTrace();
}
}
}
1 comments:
Great, thanks for sharing this post.Much thanks again. Awesome.
oracle sql plsql online training
go langaunage online training
azure online training
java online training
salesforce online training
hadoop online training
mulesoft online training
linux online training
Post a Comment