Co powinna zwrócić warstwa dostępu do bazy danych? Spotkałem się z przykłądem ze zwracała model biznesowy, tylko w takim przypadku co z id pobranego rekordu. Czy takie id powinno być polem modelu tak aby później można było zrobić np jakiegoś update do bazy odpowiedniego rekordu?
Czy warstwa dostępu do danych powinna zwracać model biznesowy?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: U krasnoludów - pod górą
- Postów: 4714
W chwili obecnej nie ma przepisów prawnych regulujących warstwę dostępu do danych. Możesz zwracać co Ci się podoba.
- Rejestracja: dni
- Ostatnio: dni
No dobra wiesz ze nie o to pytam :)
W takim razie jakie sa dobre praktyki w takich przypadkach?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: XML Hills
Zwracanie IDków bazodanowych wyżej to pakowanie się w kłopoty. Z jednej strony kod biznesowy zacznie polegać na tych IDkach zamiast koncentrować się na znalezieniu minimalnego zbioru unikalnych cech obiektu (czyli np loginu wewnętrznego dla konta użytkownika, pary typu [login zewnętrzny, dostawca uwierzytelniania] dla konta użytkownika, numeru faktury, pary typu [zewnętrzna nazwa konta, źródło kontraktu] dla przychodzącego kontraktu itd). Z drugiej strony bazodanowe IDki nie siedzą tylko w jednej kolumnie jako klucz główny. Czasem w danej tabeli w bazie danych jest wiele kluczy obcych opartych o wewnętrzne IDki bazodanowe i wtedy pchając takie IDki do kodu biznesowego trzeba je synchronizować (czyli np czasami obliczać ponownie przy zapisie do bazy).
IDki bazodanowe powinny być raczej szczegółem implementacyjnym przy integracji z konkretną bazą danych. Ich cel to głównie optymalizacja wydajnościowa - ID bazodanowe oparte o niedużą liczbę całkowitą jest łatwiejsze do zindeksowania czy zeskanowania niż np klucz główny złożony z trzech kolumn o złożonych wartościach (typu napisy, daty czy duże liczby).