public static function load($in, $nullable = true, $usingCache = true) {
		if( empty($in) ) {
			if( $nullable ) {
				return null;
			}
			static::throwNotFound('invalidParameter_load');
		}
		// Try to load an object from this class
		if( is_object($in) && $in instanceof static ) {
			return $in;
		}
		$IDFIELD = static::$IDFIELD;
		// If $in is an array, we trust him, as data of the object.
		if( is_array($in) ) {
			$id = $in[$IDFIELD];
			$data = $in;
		} else {
			$id = $in;
		}
		if( !is_ID($id) ) {
			static::throwException('invalidID');
		}
		// Loading cached
		if( $usingCache && isset(static::$instances[static::getClass()][$id]) ) {
			return static::$instances[static::getClass()][$id];
		}
		// If we don't get the data, we request them.
		if( empty($data) ) {
			// Getting data
			$obj = static::get(array(
				'where'  => $IDFIELD . '=' . $id,
				'output' => SQLAdapter::OBJECT,
			));
			// Ho no, we don't have the data, we can't load the object !
			if( empty($obj) ) {
				if( $nullable ) {
					return null;
				}
				static::throwNotFound();
			}
		} else {
			$obj = new static($data);
		}
		// Caching object
		return $usingCache ? $obj->checkCache() : $obj;
	}