オブジェクト クラスとオブジェクト カテゴリ
オブジェクト クラスの各インスタンスには、オブジェクトがインスタンスであるクラスを識別する複数値 objectClass プロパティと、そのクラスの派生元となるすべての構造または抽象スーパークラスがあります。 したがって、ユーザー オブジェクトの objectClass プロパティは、トップ、人物、organizationalPerson、およびユーザークラス識別します。 objectClass プロパティには、一覧に補助クラスは含まれません。 objectClass 値は、オブジェクト インスタンスの作成時に設定され、変更できません。
オブジェクト クラスの各インスタンスには、objectCategory プロパティもあります。これは、オブジェクトがインスタンスであるクラスまたはそのスーパークラスの 1 つの識別名を含む単一値プロパティです。 オブジェクトが作成されると、システムは objectCategory プロパティを、そのオブジェクト クラスの defaultObjectCategoryプロパティ指定された値に設定します。 オブジェクトの objectCategory プロパティは変更できません。
詳細と、オブジェクトの objectClass プロパティを取得するコード例については、「objectClass 属性の取得」を参照してください。
大事な
Windows Server 2008 より前のバージョンでは、objectClass 属性のインデックスは作成されません。 これは、複数の値を持ち、一意ではないからです。つまり、objectClass 属性のすべてのインスタンスには、最上位の クラスが含まれます。 つまり、インデックスは非常に大きく、効果がありません。 特定のクラスのオブジェクトを検索するには、objectCategory 属性を使用します。この属性は単一値でインデックスが付けられます。 検索フィルターでこれらのプロパティを使用する方法の詳細については、「検索を決定する」を参照してください。
ほとんどのクラスでは、defaultObjectCategory は、クラスの classSchema オブジェクトの識別名です。 たとえば、organizationalUnit クラスの defaultObjectCategory は "CN=Organizational-Unit,CN=Schema,CN=Configuration,<DC=forestroot>" です。 ただし、一部のクラスは、defaultObjectCategoryとして別のクラスを参照します。 これにより、異なるクラスの場合でも、クエリで関連オブジェクトのグループを簡単に見つけることができます。 たとえば、ユーザー、人物、組織の個人、および連絡先クラスはすべて、defaultObjectCategory プロパティの ユーザー クラスを識別します。 これにより、(objectCategory=person) などの検索フィルターで、これらすべてのクラスのインスタンスを 1 つのクエリで検索できます。 ユーザーのクエリは非常に一般的であるため、これは単純な最適化です。
構造クラスからサブクラスを作成する場合は、新しいクラスの defaultObjectCategory値スーパークラスの同じ識別名に設定することをお勧めします。 これにより、標準 UI でサブクラスを "検索" できます。