import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.hibernate.Session;
import org.hibernate.jdbc.Work;

...

@Autowired
private
EntityManagerFactory factory;    

public Connection getConnection() {

    EntityManager entityManager = factory.createEntityManager();
    entityManager.getTransaction().begin();
    
    
Session hibernateSession = entityManager.unwrap(Session.class);
    
ConnectionWork work = new ConnectionWork(); 
    hibernateSession.doWork(work);
    
Connection conn = work.getConnection(); 
    
    return conn;
}

private static class ConnectionWork implements Work { 
    
    Connection conn; 
    
    @Override 
    public void execute(Connection conn) throws SQLException { 
        this.conn = conn; 
    }
    
    Connection getConnection() { 
        return conn; 
    }
}