I am a research assistant for any college. We are retooling our Software Architecture subject, wishing to "modernize", and address a few of the teaching and collaborative learning issues we have discovered in past semesters.
Students are requested to quickly develop a prototype of the architectured system using Eclipse.
For persistence, we have led students to HSqlDb.
Last semester we received significant feedback that writing the information Access Layer and mapping to OO has had a lot of time. This plumbing work might be better allocated to more relevant things, like scaling, finish-to-finish perf or satisfying more situations.
Inside a real-world production, I'd pick an ORM tech, like Hibernate, however the subject has already been too complex to train another technology (and Hibernate is really a massive someone to learn for college students IMHO).
So, my inquiries to the SO community:
- Must we consider giving students an item oriented database (when they remain)? This protects time on ORM and plumbing
- Must we stick to RDBMS and tell students to roll their very own ORM?
- Must we point students to some lightweight, simple ORM?
Remember, this is not real life, but we want to train real life abilities whenever possible. Teaching ORM not as essential as getting students to quickly prototype a method that satisfies the situations.
Any assistance is greatly appreciated.
UPDATE Appreciate your reactions. I am a C# dev in mind too (see these posts), but regrettably all of the students are just acquainted with Java once they enter into the topic.
I must totally disagree by using ORM within an educational atmosphere. You have to have the ability to walk prior to running, and making use of ORM removes an essential part of the training process regarding utilizing a relational database within an application. You need to stay with a really lightweight data access framework--one which requires students to create their very own SQL and (at best) does not allow this scope from the code to become associated with the UI or (a minimum of) does not want it.
I'm of course not really acquainted with the Java world as it requires actual enterprise development, however i realize (somewhat begrudgingly) it's THE atmosphere within the educational system. As I think that students ought to be uncovered to .Internet, that's a disagreement for an additional time ) In almost any even, I am quite sure that there's some kind of framework available that satisfies this.
I'd be prepared to wager that there's something available that delivers some code generation functionality. Inside my old job, we simply utilized the .Internet database libraries to the stage of (relatively) low-level reading through from the data in the database. We did not use the databases or change-monitoring technologies, but rather folded our very own. SQL instructions were written manually, however the framework still provided type safety and wealthy designer support. My point here's that both of them are possible. I recommend finding something such as this in Java, needing the scholars to hands-code a couple of of those plugs to achieve an awareness of the items adopts them, then possess the code generator perform the other "gruntwork" plumbing according to their SQL claims.
Avoid using any SQL generation. You Have To have the ability to write the SQL before you decide to allow the computer get it done for you personally. The 2nd you utilize ORM to behave you don't understand how to do in SQL may be the second that you have lost charge of your database model, and they have to realize that.
As somebody who accepted OO heartily, and RDBMS grudgingly... I'd encourage, even beg, computer science departments to help keep theory and exercise of relational databases within the foreground. If that you can do whilst you utilize an ORM for that OO classes, go for this. But I'd would rather see students being released of school knowning that OO - relational mapping is hard, and why it's difficult, which it doesn't mean the relational model is damaged.
Not very damaged, anyway.