sessionfactoryproxy.java

来自「anewssystem新闻发布系统集成使用了spring hibernate f」· Java 代码 · 共 66 行

JAVA
66
字号
package anni.core.mock.db.hibernate;

import java.io.Serializable;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import anni.core.dao.support.Page;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.hibernate.Query;
import org.hibernate.SessionFactory;

import org.hibernate.classic.Session;


public class SessionFactoryProxy implements InvocationHandler {
    /**
     * logger.
     */
    private static Log logger = LogFactory.getLog(SessionFactoryProxy.class);
    private SessionFactory sessionFactory;

    /**
     *
     */
    public static Object getInstance(Class clz) {
        SessionFactoryProxy proxy = new SessionFactoryProxy();
        proxy.sessionFactory = (SessionFactory) Proxy.newProxyInstance(clz
                .getClassLoader(), new Class[] {clz}, proxy);

        return proxy.sessionFactory;
    }

    /**
     *
     */
    public Object invoke(Object proxy, Method m, Object[] args)
        throws Throwable {
        logger.info(m);

        Class clz = m.getReturnType();

        String methodName = m.getName();

        if (methodName.equals("openSession")) {
            return (Session) SessionProxy.getInstance(Session.class,
                sessionFactory);
        } else if (methodName.equals("toString")) {
            return "_";
        }

        return ProxyHelper.generateReturn(proxy, m, args);
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?