📄 dataproxyhandler.java
字号:
package org.hibernate.test.dynamicentity;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.util.HashMap;import java.io.Serializable;/** * A simple {@link InvocationHandler} to act as the handler for our generated * {@link java.lang.reflect.Proxy}-based entity instances. * <p/> * This is a trivial impl which simply keeps the property values into * a Map. * * @author <a href="mailto:steve@hibernate.org">Steve Ebersole </a> */public final class DataProxyHandler implements InvocationHandler { private String entityName; private HashMap data = new HashMap(); public DataProxyHandler(String entityName, Serializable id) { this.entityName = entityName; data.put( "Id", id ); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String methodName = method.getName(); if ( methodName.startsWith( "set" ) ) { String propertyName = methodName.substring( 3 ); data.put( propertyName, args[0] ); } else if ( methodName.startsWith( "get" ) ) { String propertyName = methodName.substring( 3 ); return data.get( propertyName ); } else if ( "toString".equals( methodName ) ) { return entityName + "#" + data.get( "Id" ); } else if ( "hashCode".equals( methodName ) ) { return new Integer( this.hashCode() ); } return null; } public String getEntityName() { return entityName; } public HashMap getData() { return data; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -