0
[email_address]
<ul><li>DataObject </li></ul><ul><ul><li>Filosofia </li></ul></ul><ul><ul><li>Interfície </li></ul></ul><ul><ul><li>Constr...
DataObject Filosofia <ul><li>Les operacions de persistència són, en general, idèntiques: </li></ul><ul><ul><li>INSERT </li...
DataObject Filosofia <ul><li>Simplificar la lògica dels objectes implica: </li></ul><ul><ul><li>Reducció de codi </li></ul...
DataObject Filosofia <ul><li>Les propietats que resulten de claus externes fan referència a un objecte que representa la t...
DataObject Interfície <ul><li>Constructor:  </li></ul><ul><ul><li>Public Sub New(ByRef uSQLClass As SQLClass) </li></ul></...
DataObject Interfície: operacions bàsiques <ul><li>Save: Desa les dades de l’objecte, fent una operació d’INSERT o UPDATE....
DataObject Interfície: cerca <ul><li>Search: Llença una consulta amb el conjunt de propietats que han estat informades com...
DataObject Interfície: control d’errors <ul><li>OnErrorThrowException: Indica si, produir-se un error, l’excepció s’ha de ...
DataObject Interfície Dim cSql As New SQLClass(“degloba.INF”) Dim obj As New DataObject(cSql) obj.Search() If obj.SearchRe...
DataObject Interfície: edició <ul><li>Es poden canviar les dades sense accés a base de dades. </li></ul><ul><li>És importa...
DataObject Interfície: events  <ul><li>BeforeInsert(Object, Boolean) </li></ul><ul><ul><li>Es llença prèviament a l’inserc...
DataObject Construcció <ul><li>Un nou DataObject depèn dels següents components: </li></ul><ul><ul><li>Una taula a base de...
DataObject Construcció <ul><li>Taula a base de dades / DataSet </li></ul><ul><li>DataSet </li></ul>CRITERI_AVALUACIO PK ID...
DataObject Construcció <ul><li>DataAdapter: CriteriAvaluacio </li></ul><ul><ul><li>INSERT  INTO CRITERI_AVALUACIO  (ID_CRI...
DataObject Construcció: exemple Private Const C_DefaultTableSource As String = “CRITERI_AVALUACIO“ Private _IdCriteri As I...
DataObject Construcció : exemple Public Property Key_IdCriteri() As Integer Get Return _IdCriteri End Get Set(ByVal Value ...
DataObject Construcció : exemple Public Property Descripcio() As String Get Me.VerifyData() Return _descripcio End Get Set...
DataObject Construcció: exemple Protected Overrides Sub InitializeKeyProperties() MyBase.InitializeKeyProperties() _IdCrit...
DataObject Construcció: exemple Protected Overrides Function TestForValidKeyProperties(Optional ByVal ForOperation As Oper...
DataObject Construcció: exemple Protected Overrides Sub FillKeyCommandParameters(ByRef opc As OracleParameterCollection, B...
DataObject Construcció: exemple Protected Overrides Sub FillPropertiesFromDataRow(ByRef dr As DataRow) With dr   Me.FillIt...
DataObject Construcció: exemple Public Overrides Property DataSet() As DataSet Get If IsNothing(MyBase.DataSet) Then MyBas...
DataObject Construcció: exemple Public Shadows Property DataComponent() As adAvaluacio Get If IsNothing(MyBase.DataCompone...
DataObject Construcció: exemple Public Overrides Property DataAdapter() As _ System.Data.OracleClient.OracleDataAdapter Ge...
DataObject Construcció: exemple Public Sub New(ByRef uSQLClass As degloba.Dad.SQLClass) MyBase.New(uSQLClass) MyBase.Table...
DataObject Conclusió <ul><li>L ’esforç de construcció és mínim -> t ots els objectes es construeixen de la mateixa forma. ...
Upcoming SlideShare
Loading in...5
×

Slshdataobject01

308

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
308
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Slshdataobject01"

  1. 1. [email_address]
  2. 2. <ul><li>DataObject </li></ul><ul><ul><li>Filosofia </li></ul></ul><ul><ul><li>Interfície </li></ul></ul><ul><ul><li>Construcció </li></ul></ul><ul><ul><li>Conclusió </li></ul></ul>
  3. 3. DataObject Filosofia <ul><li>Les operacions de persistència són, en general, idèntiques: </li></ul><ul><ul><li>INSERT </li></ul></ul><ul><ul><li>UPDATE </li></ul></ul><ul><ul><li>DELETE </li></ul></ul><ul><li>La càrrega de dades es realitza amb una consulta simple. </li></ul><ul><li>Les vistes complexes s’han d’intentar reduir al mínim nombre de consultes. </li></ul>
  4. 4. DataObject Filosofia <ul><li>Simplificar la lògica dels objectes implica: </li></ul><ul><ul><li>Reducció de codi </li></ul></ul><ul><ul><li>Evitar errors de programació </li></ul></ul><ul><li>Simplificació: </li></ul><ul><ul><li>Una taula de base de dades s’identifica amb una única classe. </li></ul></ul><ul><ul><li>Al codi no hauria d’aparèixer cap sentència SQL. </li></ul></ul><ul><ul><li>Construir els objectes per composició d’altres més simples. </li></ul></ul>
  5. 5. DataObject Filosofia <ul><li>Les propietats que resulten de claus externes fan referència a un objecte que representa la taula a la que pertany la clau. </li></ul><ul><li>Els objectes només s’han de crear quan sigui necessari -> evitar la creació d’objectes innecessària. </li></ul>
  6. 6. DataObject Interfície <ul><li>Constructor: </li></ul><ul><ul><li>Public Sub New(ByRef uSQLClass As SQLClass) </li></ul></ul><ul><ul><li>La creació obliga tenir una connexió a base de dades -> s’eviten els errors per omissió. </li></ul></ul><ul><li>Objectes de persistència de dades: </li></ul><ul><ul><li>DataAdapter -> defineix les operacions </li></ul></ul><ul><ul><li>DataComponent -> agrupa els DataAdapter </li></ul></ul><ul><ul><li>DataSet -> còpia de dades seleccionades </li></ul></ul><ul><ul><li>DataTable -> taula del DataSet corresponent a l’objecte </li></ul></ul>
  7. 7. DataObject Interfície: operacions bàsiques <ul><li>Save: Desa les dades de l’objecte, fent una operació d’INSERT o UPDATE. </li></ul><ul><li>Delete: Elimina el registre corresponent. </li></ul><ul><li>Exists: Indica si el registre existeix. </li></ul><ul><li>VerifyData: Determina si s’ha de fer una càrrega de dades. És un mètode protegit i es fa servir a la construcció de l’objecte. </li></ul>
  8. 8. DataObject Interfície: cerca <ul><li>Search: Llença una consulta amb el conjunt de propietats que han estat informades com a restricció. Està sobrecarregada per acceptar diferents accessors. </li></ul><ul><li>SearchResults: Enumerador amb el conjunt resultat de l’operació Search . Aquesta propietat és de tipus DataObjectEnumerator i la detallarem més endavant. </li></ul>
  9. 9. DataObject Interfície: control d’errors <ul><li>OnErrorThrowException: Indica si, produir-se un error, l’excepció s’ha de llençar o no. Per defecte és True . </li></ul><ul><li>Exception: L’última excepció que s’ha produït (si s’ha produït cap). </li></ul>
  10. 10. DataObject Interfície Dim cSql As New SQLClass(“degloba.INF”) Dim obj As New DataObject(cSql) obj.Search() If obj.SearchResults.Count > 0 Then obj = obj.SearchResults.Items(0) End If If obj.exists Then obj.Delete() End If
  11. 11. DataObject Interfície: edició <ul><li>Es poden canviar les dades sense accés a base de dades. </li></ul><ul><li>És important quan volem copiar dades i modificar la clau primària. </li></ul><ul><li>Operacions </li></ul><ul><ul><li>BeginEdit </li></ul></ul><ul><ul><li>EndEdit </li></ul></ul><ul><ul><li>IsEditing </li></ul></ul><ul><li>Quan es fa una cerca, si l’objecte està en mode edició, els items també ho estaran. </li></ul>
  12. 12. DataObject Interfície: events <ul><li>BeforeInsert(Object, Boolean) </li></ul><ul><ul><li>Es llença prèviament a l’inserció de dades. </li></ul></ul><ul><ul><li>El segon paràmetre és de retorn i indica si l’acció té que continuar o s’ha de cancel·lar. </li></ul></ul>
  13. 13. DataObject Construcció <ul><li>Un nou DataObject depèn dels següents components: </li></ul><ul><ul><li>Una taula a base de dades </li></ul></ul><ul><ul><li>Un DataAdapter </li></ul></ul><ul><ul><li>Un DataSet </li></ul></ul>
  14. 14. DataObject Construcció <ul><li>Taula a base de dades / DataSet </li></ul><ul><li>DataSet </li></ul>CRITERI_AVALUACIO PK ID_CRITERI Integer TIPUS String DESCRIPCIO String CRITERI_AVALUACIO PK ID_CRITERI INT(4) TIPUS CHAR(3) DESCRIPCIO VARCHAR2(200)
  15. 15. DataObject Construcció <ul><li>DataAdapter: CriteriAvaluacio </li></ul><ul><ul><li>INSERT INTO CRITERI_AVALUACIO (ID_CRITERI, TIPUS, DESCRIPCIO) VALUES </li></ul></ul><ul><ul><li>(:ID_CRITERI, :TIPUS, :DESCRIPCIO) </li></ul></ul><ul><ul><li>UPDATE CRITERI_AVALUACIO </li></ul></ul><ul><ul><li>SET TIPUS = :TIPUS, DESCRIPCIO = :DESCRIPCIO </li></ul></ul><ul><ul><li>WHERE ID_CRITERI = :ID_CRITERI </li></ul></ul><ul><ul><li>DELETE CRITERI_AVALUACIO WHERE ID_CRITERI = :ID_CRITERI </li></ul></ul><ul><ul><li>SELECT ID_CRITERI, TIPUS, DESCRIPCIO FROM CRITERI_AVALUACIO WHERE </li></ul></ul><ul><ul><li>(ID_CRITERI = :ID_CRITERI OR :ID_CRITERI IS NULL) AND (TIPUS = :TIPUS OR :TIPUS IS NULL) AND </li></ul></ul><ul><ul><li>(DESCRIPCIO LIKE :DESCRIPCIO OR : DESCRIPCIO IS NULL) </li></ul></ul>
  16. 16. DataObject Construcció: exemple Private Const C_DefaultTableSource As String = “CRITERI_AVALUACIO“ Private _IdCriteri As Integer Private _Tipus As String Private _Descripcio As String
  17. 17. DataObject Construcció : exemple Public Property Key_IdCriteri() As Integer Get Return _IdCriteri End Get Set(ByVal Value As Integer) If _IdCriteri <> Value Then _IdCriteri = Value Me.OnKeyPropertyChanged(&quot;_IdCriteri &quot;) End If End Set End Property
  18. 18. DataObject Construcció : exemple Public Property Descripcio() As String Get Me.VerifyData() Return _descripcio End Get Set(ByVal Value As String) Me.VerifyData() If Not IsNothing(Value) Then Value = Trim(Value) If _descripcio <> Value Then _descripcio = Value Me.OnPropertyChanged(&quot;_descripcio &quot;) End If End Set End Property
  19. 19. DataObject Construcció: exemple Protected Overrides Sub InitializeKeyProperties() MyBase.InitializeKeyProperties() _IdCriteri = -1 End Sub Protected Overrides Sub InitializeProperties() MyBase.InitializeProperties() _Tipus = Nothing _Descripcio End Sub
  20. 20. DataObject Construcció: exemple Protected Overrides Function TestForValidKeyProperties(Optional ByVal ForOperation As OperationValidationEnum = OperationValidationEnum.ForSelect) As Boolean If _IdCriteri > -1 Then Return True Return False End Function Protected Overrides Function TestForValidNonKeyProperties(Optional ByVal ForOperation As OperationValidationEnum = OperationValidationEnum.ForSelect) As Boolean Return True End Function
  21. 21. DataObject Construcció: exemple Protected Overrides Sub FillKeyCommandParameters(ByRef opc As OracleParameterCollection, ByVal ForOperation As OperationValidationEnum) With opc If Me.IsSet(&quot;_IdCriteri&quot;) And _IdCriteri > -1 Then _ .Item(&quot;:ID_CRITERI&quot;).Value = _IdCriteri End With End Sub Protected Overrides Sub FillCommandParameters(ByRef opc As OracleParameterCollection, ByVal ForOperation As OperationValidationEnum) With opc If Me.IsSet(&quot;_Tipus&quot;) And IsFilledString(_Tipus) Then _ .Item(&quot;:TIPUS&quot;).Value = _Tipus If Me.IsSet(&quot;_Descripcio&quot;) And IsFilledString(_Descripcio) Then _ .Item(&quot;:DESCRIPCIO&quot;).Value = _Descripcio End With End Sub
  22. 22. DataObject Construcció: exemple Protected Overrides Sub FillPropertiesFromDataRow(ByRef dr As DataRow) With dr Me.FillItem(_IdCriteri, .Item(&quot;ID_CRITERI&quot;), &quot;_IdCriteri&quot;) Me.FillItem(_Tipus, .Item(&quot;TIPUS&quot;), &quot;_Tipus&quot;) Me.FillItem(_Descripcio, .Item(&quot;DESCRIPCIO&quot;), &quot;_Descripcio&quot;) End With End Sub
  23. 23. DataObject Construcció: exemple Public Overrides Property DataSet() As DataSet Get If IsNothing(MyBase.DataSet) Then MyBase.DataSet = New dsCriteriAvaluacio End If Return MyBase.DataSet End Get Set(ByVal Value As DataSet) MyBase.DataSet = Value End Set End Property
  24. 24. DataObject Construcció: exemple Public Shadows Property DataComponent() As adAvaluacio Get If IsNothing(MyBase.DataComponent) Then MyBase.DataComponent = New adAvaluacio End If Return MyBase.DataComponent End Get Set(ByVal Value As adAvaluacio) MyBase.DataComponent = Value End Set End Property
  25. 25. DataObject Construcció: exemple Public Overrides Property DataAdapter() As _ System.Data.OracleClient.OracleDataAdapter Get If IsNothing(MyBase.DataAdapter) Then MyBase.DataAdapter = _ DataComponent.adCRITERI_AVALUACIO End If Return MyBase.DataAdapter End Get Set(ByVal Value As System.Data.OracleClient.OracleDataAdapter) MyBase.DataAdapter = Value End Set End Property
  26. 26. DataObject Construcció: exemple Public Sub New(ByRef uSQLClass As degloba.Dad.SQLClass) MyBase.New(uSQLClass) MyBase.TableSource = C_DefaultTableSource End Sub
  27. 27. DataObject Conclusió <ul><li>L ’esforç de construcció és mínim -> t ots els objectes es construeixen de la mateixa forma. </li></ul><ul><li>Els possibles errors de lògica es redueixen considerablement -> reduïm el temps dedicat a depurar. </li></ul><ul><li>La construcció d’objectes es podria automatitzar. </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×