X

Autorius Tema: Duombazių programavimo būdai. ORM, patterns  (Skaityta 62 kartus)

Neprisijungęs Gintas Kovalevskis

  • Naujokas
  • *
  • Įrašai: 342
  • Karma: +10/-0
    • Žiūrėti profilį
Duombazių programavimo būdai. ORM, patterns
« Įrašytas: 2012-12-05 11:02:16 am »
Išskaidyta iš temos: http://forumas.manualai.lt/kita-36/meekrodb-mysqli-duomen-bazs-klas/


o tu paziurek sita:

[url]http://doctrine-124-documentation.blg.lt/[/url]

darbe pas mane naudojam doctrine'a, tikrai stipriai pagreitina darba su duombazem


Nuostabus dalykas, bet jam perprasti tikrai nemažai laiko reikia...
« Paskutinį kartą keitė: 2012-12-06 14:54:04 pm sukūrė Lukas Liesis »

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 785
  • Karma: +53/-0
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #1 Įrašytas: 2012-12-05 13:22:02 pm »
O aš php activerecord naudoju. Ten viskas dar gražiau apsirašo, plius pritaikyta MVC šablonui.
Pvz. :
<?php
// sukurti nauja įrašą users lentelėje
Users::create(array(
  
'name' => 'Vardas',
  
'surname' => 'Pavarde',
  
'blabla' => 'blablabla'
  
// ........
));

// istrinti useri su ID 10:
Users::delete(10);

//Paselektinti user'i su id 10:
$user Users::find(10);
// kazka jame pakeisti:
$user->country_id 21;
$user->save();

// Paselektinti user'i kur username = vardas, password = slaptazodis
$user_exists Users::find_by_username_and_password(array('vardas''slaptazodis'));

?>

Plius, jeigu modeliai surišti tarpusavyje (pavyzdžiui, per foreign key User'iui priskirta šalis - country_id), pagal tuos constraint'us automatiškai viskas susikuria. Taigi jeigu users lentelėje yra laukas country_id, ir egzistuoja lentelė `countries` (tarkim su fieldu `name`), tai galima daryti taip:
<?php
$user 
User::find(2);
print 
"Vartotojo šalis: " $user->country->name;
?>
ir pan. Naudojamas lazy-loading'as, modelių sąryšiai kraunami tik tada, kai jų prireikia. Plius modelyje aprašomos taisyklės, pagal kurias modelis automatiškai validuojamas prieš saugant jį į duombazę. Ir labai paprastai ir intuityviai viskas apsirašo. Žodžiu labai patogu, ir tikrai patogiau, negu paprasti užklausų wrapper'iai, kaip meekrodb. Tik perprast reik ;)
BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 6817
  • Karma: +210/-15
    • Žiūrėti profilį
    • mano CV
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #2 Įrašytas: 2012-12-05 13:26:47 pm »
o tu paziurek sita:

http://doctrine-124-documentation.blg.lt/

darbe pas mane naudojam doctrine'a, tikrai stipriai pagreitina darba su duombazem


Nuostabus dalykas, bet jam perprasti tikrai nemažai laiko reikia...


jei patiko doktrina, tai sitas jauciu dar labiau patiks: http://k3jw.com/code/amiss/ ;)
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
blg.lt

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 785
  • Karma: +53/-0
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #3 Įrašytas: 2012-12-05 13:28:22 pm »
jei patiko doktrina, tai sitas jauciu dar labiau patiks: http://k3jw.com/code/amiss/ ;)

Tas pats activerecord, kurį kątik aprašiau, tik kastruotas ir labiau supainiotas :))
BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Manualai.lt Forumas

Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #3 Įrašytas: 2012-12-05 13:28:22 pm »

Neprisijungęs Interneto keleivis

  • Naujokas
  • *
  • Įrašai: 169
  • Karma: +3/-0
    • Žiūrėti profilį
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #4 Įrašytas: 2012-12-05 13:30:57 pm »
Tai gal pervadinkit šitą temą jei jau eina kalba apie kitas kastruotas klases?
Visi nori laimės, bet niekas nenori skausmo...

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 6817
  • Karma: +210/-15
    • Žiūrėti profilį
    • mano CV
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #5 Įrašytas: 2012-12-06 14:21:56 pm »
jei patiko doktrina, tai sitas jauciu dar labiau patiks: http://k3jw.com/code/amiss/ ;)

Tas pats activerecord, kurį kątik aprašiau, tik kastruotas ir labiau supainiotas :))


nu ne. is tu kas turi gera patirti suzinojau, kad activerecord yra vengiamas daiktas ir geriau isvis jo nenaudot, palyginus su amiss. Amiss gerai tuo, kad veikia nepriklausomai nuo duombazes, o doktrina (ypac v1) yra galima sakuoti kastruotas orm'as. anyways, diskusija isties ne apie tai. kas ka nori ta naudoja.
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
blg.lt

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 785
  • Karma: +53/-0
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #6 Įrašytas: 2012-12-06 14:36:20 pm »
Būtų įdomu sužinot, kodėl AR vengiamas daiktas. Active Record yra jau gan seniai plačiai pripažintas design pattern'as. Ar tu kalbi būtent apie šitą libą? Bet kuriuo atveju, įdomu būtų išgirsti - kodėl jie taip mano :)
BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 6817
  • Karma: +210/-15
    • Žiūrėti profilį
    • mano CV
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #7 Įrašytas: 2012-12-06 14:52:36 pm »
Būtų įdomu sužinot, kodėl AR vengiamas daiktas. Active Record yra jau gan seniai plačiai pripažintas design pattern'as. Ar tu kalbi būtent apie šitą libą? Bet kuriuo atveju, įdomu būtų išgirsti - kodėl jie taip mano :)


manau sitas atsako i tavo klausima:

ActiveRecord is a pattern common in ORMs. Doctrine is an ORM which uses an ActiveRecord'ish style.

Some benefits of using tools like Doctrine:

Database independence: The code should be easy to port to different DBs. For example, I often test using SQLite and use MySQL or Postgre in production with no changes in code.
They reduce the amount of code you have to write: A large part of application code deals with communicating with the database. An ORM takes care of most of that, so you can concentrate on writing the actual app.
Of course, they don't come without disadvantages:

Doctrine is heavy so it is slower than using straight SQL
ORMs can be complex, adding some weight to what you have to learn, and they can sometimes be difficult to understand for inexperienced programmers


šaltinis: http://stackoverflow.com/questions/1113716/orm-and-active-record-pattern-in-php
« Paskutinį kartą keitė: 2012-12-06 14:54:28 pm sukūrė Lukas Liesis »
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
blg.lt

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 785
  • Karma: +53/-0
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #8 Įrašytas: 2012-12-06 16:18:15 pm »
Nematau nei vieno argumento kodėl nenaudot AR. Doctrine - heavy. O tam libe, kur mečiau linką, viskas depends on you. Jei optimaliai rašysi - optimaliai ir veiks. Bet kad
Citata
activerecord yra vengiamas daiktas ir geriau isvis jo nenaudot
tai nematau :D
BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 6817
  • Karma: +210/-15
    • Žiūrėti profilį
    • mano CV
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #9 Įrašytas: 2012-12-06 16:26:03 pm »
nu va issaiskinau, active record failas yra tame, kad jis negali dirbti be connectiono ir taip surija resursus bereikalingai. Doctrina pirma irgi, o amiss - ne, man rodos doktrina 2 irgi ne, taciau tiek amiss tiek doktrina 2 reikalauja php 5.3

active record'as yra desing paternas kuri galima rast ir doktrinoj, taciau doktrina dar turi ir kitokiu paternu viduje, todel ji aisku yra didele. Bent jau as pats kol kas naudojau tik amiss ir doktrina 1, tai man abu patiko, tik su amiss kazoks lengvumas jauciasi ir paprastumas, todel as su amiss. Dar tai, kad maziau resursu ji surija, tai irgi didelis pliusas. Aisku mes cia kalbam tik apie didelius projektus, jei projekte ten 10 lenteliu ar pns, tai koks skirtumas.. bet tie projektai prie kuriu dirbdamas naudoju amiss/doktrina turi ziauriai daug lenteliu, struktura yra sudetinga, viskas yra sumaisyta su zendu (doktrina) o amiss isvis ten taip lengvai viskas, reiks pasigilinti daugiau :/ naudojamas toks pimple su fitzgerald'u.. jei netingit pasigooglinkit apie tuos dalykus, pats dar per mazai gilinaus, kad galeciau kazka daugiau pakomentuoti, taciau sukas tie dalykai tikrai fainai :)

apibendrinus tai kiekvienas projektas turi savo specifika, vienoj vietoj lengviau su vienu dalyku, kitur su kitu, kai kur isvis reikia simple sql..

Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
blg.lt

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 785
  • Karma: +53/-0
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #10 Įrašytas: 2012-12-06 17:23:09 pm »
O kaip ORM'as gali dirbti be connection'o? :D tiesiog reikia laiku ir vietoj inicializuot. Na vienu žodžiu. Tokių tools'ų tikrai yra daug, ir sutiksiu, kad priklausomai nuo projekto gali būti geriau naudot vieną arba kitą ;)
BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 6817
  • Karma: +210/-15
    • Žiūrėti profilį
    • mano CV
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #11 Įrašytas: 2012-12-06 17:36:59 pm »
O kaip ORM'as gali dirbti be connection'o? :D tiesiog reikia laiku ir vietoj inicializuot. Na vienu žodžiu. Tokių tools'ų tikrai yra daug, ir sutiksiu, kad priklausomai nuo projekto gali būti geriau naudot vieną arba kitą ;)

gali
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
blg.lt

Neprisijungęs vitalikaz

  • Dalyvis
  • **
  • Įrašai: 785
  • Karma: +53/-0
  • Tikėk kuo tiki
    • Žiūrėti profilį
    • blast.lt
Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #12 Įrašytas: 2012-12-06 17:48:19 pm »
Tai kad mūsų atveju ORM ir yra skirtas, kad duombazės duomenis sumap'inti su PHP objektais. Ar ne? Jeigu šnekam bendriau, tai ORM gali būti ir visiškai kitiems dalykams skirtas.
BlaST
Serveriai.lt paslaugos su 50% nuolaida!
Blast.lt blogas

Manualai.lt Forumas

Ats: Duombazių programavimo būdai. ORM, patterns
« Atsakymas #12 Įrašytas: 2012-12-06 17:48:19 pm »