01: //$Id: ProxyFactory.java 9210 2006-02-03 22:15:19Z steveebersole $
02: package org.hibernate.proxy;
03:
04: import java.io.Serializable;
05: import java.lang.reflect.Method;
06: import java.util.Set;
07:
08: import org.hibernate.HibernateException;
09: import org.hibernate.engine.SessionImplementor;
10: import org.hibernate.type.AbstractComponentType;
11:
12: /**
13: * Contract for run-time, proxy-based lazy initialization proxies.
14: *
15: * @author Gavin King
16: */
17: public interface ProxyFactory {
18:
19: /**
20: * Called immediately after instantiation of this factory.
21: * <p/>
22: * Essentially equivalent to contructor injection, but contracted
23: * here via interface.
24: *
25: * @param entityName The name of the entity for which this factory should
26: * generate proxies.
27: * @param persistentClass The entity class for which to generate proxies;
28: * not always the same as the entityName.
29: * @param interfaces The interfaces to expose in the generated proxy;
30: * {@link HibernateProxy} is already included in this collection.
31: * @param getIdentifierMethod Reference to the identifier getter method;
32: * invocation on this method should not force initialization
33: * @param setIdentifierMethod Reference to the identifier setter method;
34: * invocation on this method should not force initialization
35: * @param componentIdType For composite identifier types, a reference to
36: * the {@link org.hibernate.type.ComponentType type} of the identifier
37: * property; again accessing the id should generally not cause
38: * initialization - but need to bear in mind <key-many-to-one/>
39: * mappings.
40: * @throws HibernateException Indicates a problem completing post
41: * instantiation initialization.
42: */
43: public void postInstantiate(String entityName,
44: Class persistentClass, Set interfaces,
45: Method getIdentifierMethod, Method setIdentifierMethod,
46: AbstractComponentType componentIdType)
47: throws HibernateException;
48:
49: /**
50: * Create a new proxy instance
51: *
52: * @param id The id value for the proxy to be generated.
53: * @param session The session to which the generated proxy will be
54: * associated.
55: * @return The generated proxy.
56: * @throws HibernateException Indicates problems generating the requested
57: * proxy.
58: */
59: public HibernateProxy getProxy(Serializable id,
60: SessionImplementor session) throws HibernateException;
61:
62: }
|