在面向对象的数据库中,对象必须是封装的。对象与外部通过消息传递信息。消息传送给对象,启动相应的方法,进行相应的操作,然后把结果通过消息返回。消息是外界与对象联系的唯一途径。封装使外界只需关心方法的接口,而方法的实现是对象内部的事情,不会对外界造成任何影响。所以方法由接口和实现两部分组成。从软件工程角度看,这是符合模块分离和低耦合原则的,有利于保持数据的独立性。同时封装可以防止一些非法操作造成的副作用。
  在面向对象的模型中,数据的完整性通过对象方法的限制条件和对象本身一起放在数据库中。这保证了每次有应用程序访问数据时都在进行完整性检查。所以面向对象的完整性可以提供实例级限制:多数传统性完整性限制是作用于相同类型的所有数据项,而实例级限制可作用于数据的子集或子类。例,有一个职员,由于突出的工作能力而被提升工资,并超过了其他职员所不能超过的工资限额。通过该子类机制把一个实例限制添加到职员工作便可以实现之,而不必改变其他职员的工资限额。另外,面向对象方法局域化了条件代码,因而当限制条件改变时可以很容易地更改数据库。
  面向对象数据库用来防止条件破坏的一种方法是例外机制。数据库中遇到例外情况时,通过建立一个例外对象产生一个例外,并把控制交给适当的例外处理器。然后,处理器询问例外对象有关例外情况的信息。由于例外是一个对象,因而它具有类型,并且可以将例外按相似程度分类,每一种类型的例外都对应于一个例外处理器。
  触发器是完整性限制的另一种手段。触发器是与数据库中特定数据项相关联的机制,每当试图访问或修改数据项时,它即被激活。触发器检查对数据项是否有非法的或不正确的操作。触发器还可以执行修改操作,以保持数据库的一致性。面向对象数据库通过控制方法调用而提供了实现触发器的一种独特方式。由于数据只可以通过方法访问,因而,数据库可通过控制访问数据的方法以及在方法调用时激活相应的触发器来识别对数据修改的企图。