📄 proxyhelper.java
字号:
package org.hibernate.test.dynamicentity;import java.io.Serializable;import java.lang.reflect.Proxy;import java.lang.reflect.InvocationHandler;/** * @author <a href="mailto:steve@hibernate.org">Steve Ebersole </a> */public class ProxyHelper { public static Person newPersonProxy() { return newPersonProxy( null ); } public static Person newPersonProxy(Serializable id) { return ( Person ) Proxy.newProxyInstance( Person.class.getClassLoader(), new Class[] {Person.class}, new DataProxyHandler( Person.class.getName(), id ) ); } public static Customer newCustomerProxy() { return newCustomerProxy( null ); } public static Customer newCustomerProxy(Serializable id) { return ( Customer ) Proxy.newProxyInstance( Customer.class.getClassLoader(), new Class[] {Customer.class}, new DataProxyHandler( Customer.class.getName(), id ) ); } public static Company newCompanyProxy() { return newCompanyProxy( null ); } public static Company newCompanyProxy(Serializable id) { return ( Company ) Proxy.newProxyInstance( Company.class.getClassLoader(), new Class[] {Company.class}, new DataProxyHandler( Company.class.getName(), id ) ); } public static Address newAddressProxy() { return newAddressProxy( null ); } public static Address newAddressProxy(Serializable id) { return ( Address ) Proxy.newProxyInstance( Address.class.getClassLoader(), new Class[] {Address.class}, new DataProxyHandler( Address.class.getName(), id ) ); } public static String extractEntityName(Object object) { // Our custom java.lang.reflect.Proxy instances actually bundle // their appropriate entity name, so we simply extract it from there // if this represents one of our proxies; otherwise, we return null if ( Proxy.isProxyClass( object.getClass() ) ) { InvocationHandler handler = Proxy.getInvocationHandler( object ); if ( DataProxyHandler.class.isAssignableFrom( handler.getClass() ) ) { DataProxyHandler myHandler = ( DataProxyHandler ) handler; return myHandler.getEntityName(); } } return null; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -