Referência da API
Esta seção detalha as principais classes, interfaces e atributos do BridgeFrameWork.
1. Conexão (IConnection)
A interface IConnection (uConnection.Interfaces.pas) é responsável por abstrair a comunicação com o banco de dados.
| Método | Descrição |
|---|---|
function getConnection: TFDConnection |
Retorna a instância nativa do TFDConnection do FireDAC. |
function CreateConnection: TFDConnection |
Cria e retorna uma nova instância de conexão (Factory). |
function CreateDataSet(const ASQLValue: string): TFDQuery |
Cria um TFDQuery já configurado com o SQL informado. |
function CreateTempTable(Sender: TFDQuery): TFDMemTable |
Cria uma tabela em memória (TFDMemTable) a partir dos dados de uma query. Útil para desconectar dados do banco. |
procedure Execute(const ASQLValue: String) |
Executa um comando SQL que não retorna dados (INSERT, UPDATE, DELETE). |
procedure BeginTransaction |
Inicia uma nova transação no banco de dados. |
procedure CommitTransaction |
Confirma a transação ativa. |
procedure RollbackTransaction |
Desfaz a transação ativa. |
function InTransaction: Boolean |
Verifica se existe uma transação aberta. |
function getId(const ATable: string): Integer |
Retorna o próximo ID disponível para a tabela (gerador/sequence). |
function getSeq(const ATable, AColumnName: string): Variant |
Retorna o próximo valor de uma sequence específica. |
2. Atributos (uMetaData.Attributes)
Os atributos decoram suas classes para definir como o ORM deve mapeá-las para o banco de dados.
Mapeamento de Entidade
[Entity(TableName: string)]Marca a classe como uma entidade persistível no banco.TableName: Nome da tabela no banco de dados.- Exemplo:
[Entity('TB_CLIENTE')]
Mapeamento de Propriedades
-
[Column(ColumnName: string, Size: Integer = 0, Nullable: Boolean = True)]Mapeia a propriedade para uma coluna.ColumnName: Nome da coluna no banco.Size: Tamanho do campo (ex: 100 para Varchar(100)).Nullable: Se aceita nulo (False= Required).- Exemplo:
[Column('NOME', 60, False)]
-
[Id(AutoIncrement: Boolean = True)]Identifica a propriedade que é Chave Primária.AutoIncrement: Se o banco gera o ID automaticamente.- Exemplo:
[Id(True)]
-
[Ignore]A propriedade será ignorada pelo ORM (não será persistida).
Relacionamentos (Lazy Loading)
-
[BelongsTo(FKColumn: string)]Define um relacionamento N:1 (ex: Pedido -> Cliente).FKColumn: Nome da coluna de chave estrangeira na tabela atual.- Exemplo:
[BelongsTo('ID_CLIENTE')]
-
[HasMany(FKColumn: string)]Define um relacionamento 1:N (ex: Cliente -> Pedidos).FKColumn: Nome da coluna de chave estrangeira na tabela filha.- Exemplo:
[HasMany('ID_CLIENTE')]
-
[SoftDelete(FieldName: string, DeleteValue: Variant, RestoreValue: Variant)]Ativa a "exclusão lógica". Ao excluir, o sistema apenas atualiza o campo indicado.
3. Model (IModel / TBaseModel)
O TBaseModel implementa a interface IModel e reside em uBase.Model.pas. Ele é responsável pela execução direta das operações no banco de dados.
Métodos Principais
| Método | Descrição |
|---|---|
procedure Insert(Sender: TObject) |
Insere o objeto no banco de dados. |
procedure Update(Sender: TObject) |
Atualiza o registro correspondente ao objeto. |
procedure Delete(Sender: TObject) |
Exclui o registro (ou executa Soft Delete se configurado). |
function Find(ATableName: string; AId: Integer): TFDQuery |
Busca um registro pelo ID retornando um DataSet. |
function FindAll(ATableName: string; AParams: TDictionary): TFDQuery |
Busca registros com filtros dinâmicos. |
function FindCustom(ASQL: string): TFDMemTable |
Executa um SQL livre e retorna um TFDMemTable. Ideal para relatórios e grids. |
function ExistsFieldValue(ATable, AField, AValue: string): Boolean |
Verifica se existe algum registro com o valor informado no campo. |
4. Controller (IController / TBaseController)
O TBaseController (uBase.Controller.pas) contém as regras de negócio e validações. É a camada que a View deve consumir.
Métodos de CRUD
| Método | Descrição |
|---|---|
function Insert(Sender: TObject): TValidate |
Valida e insere um objeto. Retorna TValidate (Sucess/Message). |
function Update(Sender: TObject): TValidate |
Valida e atualiza um objeto. |
function Delete(Sender: TObject): TValidate |
Valida e exclui um objeto. |
function Save(Sender: TObject): TValidate |
"Upsert": Insere se o ID for vazio/zero, ou Atualiza se já existir. |
Métodos de Leitura
| Método | Descrição |
|---|---|
function Load(Sender: TObject; AId: Integer): Boolean |
Carrega os dados de um ID para a instância do objeto passado. Retorna True se encontrou. |
function LoadFromDataSet<T>(AList; ADataSet): Boolean |
Converte um TDataSet (origem) para uma TObjectList<T> (destino). |
function Find<T>(AId: Integer): TFDQuery |
Busca e retorna um TFDQuery para um ID específico. |
Validação
O Controller executa automaticamente validações baseadas nos atributos antes de persistir:
* Campos Obrigatórios (Nullable=False).
* Tamanho de Strings (Size).
Soft Delete
| Método | Descrição |
|---|---|
function SoftDelete(Sender: TObject): TValidate |
Executa a exclusão lógica (se configurada). |
function Restore(Sender: TObject): TValidate |
Restaura um registro excluído logicamente. |