For the type of situation you see here, a PL/SQL API has previously been constructed around the tables to protect them from unauthorized write access. In most legacy situations such as this, you do not have any choice but to work with the existing PL/SQL.
If you have a PL/SQL package that encapsulates insert, update, and delete access to an underlying table, you can override the default DML processing event for the entity object that represents the table so that you invoke the procedures in your PL/SQL API instead.
Often, such PL/SQL packages are used in combination with a companion database view. Client programs read data from the underlying table using the database view and update the table using the procedures in the PL/SQL package. This section considers the code necessary to create a Product entity object based on such a combination of a database view and a PL/SQL package.