Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Από τη μικρή εμπειρία που έχω σε εταιρία που ασχολείται με asp.net όλα γίνονται με nhibernate και δεν γράφουν ούτε γραμμή sql.

 

Ήθελα να ρωτήσω σε όσους ασχολούνται επαγγελματικά με development σε php αν ισχυει το ίδιο ?

Το doctrine είναι χρήσιμο  ?

Δημοσ.

Ναι, γενικά μιλώντας SQL δε γράφεις.

 

To doctrine είναι πολύ χρήσιμο και διαδεδομένο αλλά κάθε εργαλείο έχει άλλου είδους "προσωπικότητα".

 

Πρακτικά όλα τα frameworks συνοδεύονται από κάποιο ORM. Για standalone πράγματα που μπορείς να τα ενσωματώσεις σε κάτι μεγαλύτερο βλέπεις doctrine, propel και eloquent. Για πιο lightweight καταστάσεις αξίζει να δεις και redbeanphp.

Δημοσ.

Δε γραφουν HQL στο hibernate; Στο doctrine προσωπικα (μπορει να ειμαι χαζος) μερικες φορες επρεπε να καταφυγω σε raw SQL. Οπως για παραδειγμα fulltext search σε postgresql δεν υποστηριζόταν.

 

Δηλαδη μπορει να γράφεις sql αλλα δυσκολευομαι να πιστεψω οτι μπορει να βγει ενα project χωρις τη χρηση καποιας όπως πχ HQL που ειναι object oriented.

Δημοσ.

π.χ υπάρχει αυτός ο κώδικας: 

 

 
public IList<Banner> SelectActive()
        {
            IQueryable<Banner> banners = from thisItem in _session.Query<Banner>() select thisItem;


            banners = from thisItem in banners
                      where thisItem.Disabled == false
                      orderby thisItem.UploadDate descending
                      select thisItem;
            
   
            return banners.ToList();


        }

δεν είναι αυτός ο τρόπος ενναλακτικός του HQL ?

 

Δημοσ.

δεν είναι αυτός ο τρόπος ενναλακτικός του HQL ?

 

Ναι αλλά μόνο με την έννοια ότι και τα δύο καταλήγουν στο να πάρεις δεδομένα από τη βάση και να τα κάνεις objects -- αλλά αυτό είναι τόσο γενικό που έτσι θα μπορούσαμε να βγάλουμε το οτιδήποτε εναλλακτικό του σχεδόν οτιδήποτε άλλου.

 

Το HQL παίρνει σαν είσοδο strings. Μπορείς να του δώσεις σαν είσοδο το κείμενο του moby dick και δε θα παραπονεθεί παρά μόνο όταν τρέξει.

 

Το LINQ είναι πολύ μεγαλύτερο σε έκταση, ξεκινάει έχοντας ρητό compiler support (στην προκειμένη σ' αυτό που δείχνεις ο compiler πρώτα σε διευκολύνει μετατρέποντας το query syntax σε method syntax και στη συνέχεια από το method syntax δημιουργεί expression tree, που είναι βασικά runtime data structure) και βασικό του χαρακτηριστικό είναι πως μπορείς να το δουλέψεις και at runtime (composability κλπ).

 

Δεν ξέρω βασικά σε ποιό βαθμό γνωρίζεις LINQ για να μιλήσω ανάλογα.

Δημοσ.

Ναι, γενικά μιλώντας SQL δε γράφεις.

 

To doctrine είναι πολύ χρήσιμο και διαδεδομένο αλλά κάθε εργαλείο έχει άλλου είδους "προσωπικότητα".

 

Πρακτικά όλα τα frameworks συνοδεύονται από κάποιο ORM. Για standalone πράγματα που μπορείς να τα ενσωματώσεις σε κάτι μεγαλύτερο βλέπεις doctrine, propel και eloquent. Για πιο lightweight καταστάσεις αξίζει να δεις και redbeanphp.

 

Τί εννοείς με το "γενικά μιλώντας SQL δε γράφεις."?

Αν αναφέρεσαι στη χρήση μόνο των ORM οι ειδικοί έχουν άλλη γνώμη και υπάρχει μεγάλη διαφωνία για το θέμα ψηλέ.

http://stackoverflow.com/questions/494816/using-an-orm-or-plain-sql

 

Όπως και με τη NoSQL. Γενικά επικρατεί ενας πανικός και το παρακάνουμε. Δεν αποτελεί τη λύση -ούτε την καλύτερη φυσικά- σε κάθε πρόβλημα. Ξέρω φίλους και τουλάχιστον 50 μεγάλες εταιρίες (Ελληνικές και διεθνείς) που δεν κάνουν καν χρήση ORM και NoSQL και είναι επαγγελματίες στο χώρο για πάνω από 15 χρόνια. Μάλιστα διατηρούν και blogs σχετικά με το γιατί δεν κάνουν χρήση των παραπάνω τεχνολογιών και ο κάθε ένας έχει τους δικούς του καλούς λόγους.

 

Μήπως το παραγενικεύεις αγαπούλα?

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...