1 /* 2 * Hibernate, Relational Persistence for Idiomatic Java 3 * 4 * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as 5 * indicated by the @author tags or express copyright attribution 6 * statements applied by the authors. All third-party contributions are 7 * distributed under license by Red Hat Middleware LLC. 8 * 9 * This copyrighted material is made available to anyone wishing to use, modify, 10 * copy, or redistribute it subject to the terms and conditions of the GNU 11 * Lesser General Public License, as published by the Free Software Foundation. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 16 * for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License 19 * along with this distribution; if not, write to: 20 * Free Software Foundation, Inc. 21 * 51 Franklin Street, Fifth Floor 22 * Boston, MA 02110-1301 USA 23 * 24 */ 25 package org.hibernate.intercept; 26 27 import java.io.Serializable; 28 29 import org.hibernate.HibernateException; 30 import org.hibernate.engine.SessionImplementor; 31 32 /** 33 * Contract for controlling how lazy properties get initialized. 34 * 35 * @author Gavin King 36 */ 37 public interface LazyPropertyInitializer { 38 39 /** 40 * Marker value for uninitialized properties 41 */ 42 public static final Serializable UNFETCHED_PROPERTY = new Serializable() { 43 public String toString() { 44 return "<lazy>"; 45 } 46 public Object readResolve() { 47 return UNFETCHED_PROPERTY; 48 } 49 }; 50 51 /** 52 * Initialize the property, and return its new value 53 */ 54 public Object initializeLazyProperty(String fieldName, Object entity, SessionImplementor session) 55 throws HibernateException; 56 57 }