Χρήση Hibernate OneToMany

Σε αυτό το παράδειγμα ας υποθέσουμε ότι έχουμε Projects που το κάθε ένα έχει πολλούς μηχανικούς. Πρόκειται για μία σχέση One to Many μεταξύ της οντότητας Project και της οντότητας Engineer. Παρακάτω θα δούμε πως μπορούμε εύκολα με Annotations να εκφράσουμε αυτή την σχέση σε Hibernate και Java.

Continue reading “Χρήση Hibernate OneToMany”

Missing indirectly referenced artifact javax.transaction:jta:jar:1.0.1B:compile

Λόγω της αλλαγής της αδειοδότησης το JTA δεν είναι διαθέσιμο στα κεντρικά αποθετήρια του maven. Οπότε αν έχουμε ένα dependency που το χρειάζεται όπως πχ το hibernate-annotations τότε πρέπει να το εγκαταστήσουμε με το χέρι.

Κατεβάζουμε αρχικά απο το http://download.java.net/maven/2/javax/transaction/jta/1.0.1B/ το jta-1.0.1B.jar και το βάζουμε σε μια διαδρομή στο δίσκο, έστω ότι είναι η /tmp  (c:\temp στα windows)

Μετά τρέχουμε το

[bash]

mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar -Dfile=/tmp/jta-1.0.1B.jar

[/bash]

ή στα windows

[bash]

mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar -Dfile=c:/temp/jta-1.0.1B.jar

[/bash]

Αν δούμε το μαγικό

 [INFO] ————————————————————————

[INFO] BUILD SUCCESSFUL

[INFO] ————————————————————————

Τότε είμαστε έτοιμοι!

Δημιουργία συμπιεσμένου ZIP αρχείου με Java

Αυτό το χρειάστηκα σήμερα το πρωί. Η φιλοσοφία είναι ότι έχουμε να διαχειριστούμε κάποια αρχεία σε ένα ή παραπάνω φακέλους στο δίσκο και πρέπει να δημιουργήσουμε ένα συμπιεσμένο zip αρχείο με τα αρχεία αυτά.

Η λύση είναι αρκετά απλή.

  1. Παίρνουμε τις διαδρομές των αρχείων και τις βάζουμε σε ένα collection (Array πχ)
  2. Ανοίγουμε ένα output stream στο δίσκο που του “δίνουμε zip ιδιότητες”
  3. Διαβάζουμε ένα-ένα τα αρχεία και τα βάζουμε στο  output stream
  4. Κλείνουμε το stream

Java 7 has released!

Και εγέννετω φώς! Μετά απο χρόνια έρευνας και προσπάθειας καθώς και μεγάλης βοήθειας απο την κοινότητα, η ORACLE (SUN) επιτέλους έθεσε σε την 28η Ιουλοίου 2011 κυκλοφορία την καινούργια έκδοση Java 7.

Αυτό το release περιέχει νέα language features (JSR 334), υποστήριξη για dynamic languages (JSR 292), ένα νέο multicore-ready API (JSR 166), νέο I/O APIs (JSR 203), και πολλά άλλα χαρακτηριστικά για τα οποία μπορείτε να διαβάσετε εδώ http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html

Τα release notes θα τα βρείτε εδώ http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-429209.html

How to reference Spring Beans from Everywhere!

Λοπόν, με αφορμή κάτι που με ταλαιπωρούσε γράφω τον παρακάτω οδηγό έτσι ώστε να δείξω πως μπορείς να καλέσεις ενα Spring Bean απο πρακτικά οπουδήποτε.

Ουσιαστικά έχουμε τις εξής περιπτώσεις περιπτώσεις για να καλέσουμε ένα bean

  1. Σε Spring non Web Application
  2. Σε Spring Web Application
    1. Μέσα απο κάποιον controller
    2. Μέσα σε κάποιο servlet
    3. Μέσα σε κάποιο implementation ή οποιαδήποτε άλλη Business Logic Class (aka μια απλή java class)

Θα τις πάρουμε λοιπόν μία-μία για να δούμε πως θα δουλέψουμε.

Πρώτα όμως θα φτιάξουμε ένα Bean το οποίο και θα καλούμε κάθε φορά μέσα στο κώδικά μας.

Το Spring Bean δεν είναι τίποτε άλλο απο ένα POJO (Plain Old Java Object) το οποίο με το που γίνεται initialize το Spring Context οι setters του “γεμίζουν” με ό,τι ορίζουμε εμείς στο context.xml (το κύριο xml που ορίζοντε όλοι οι παράμετροι του Spring, θα μπορούσε να λέγεται και διαφορετικά)

Στο παράδειγμά μας θα φτιάξω ένα Constants Bean το οποίο θα περιέχει πχ “σταθερές” που θέλω να χρησημοποιώ παντού και να τις ελέγχω απο το XML

Continue reading “How to reference Spring Beans from Everywhere!”

Spring Framework Series: Μερος 4ο – Spring Webflow

Φτάσαμε αισίως στο 4ο μέρος της σειράς μας για το Spring. Στο προηγούμενο κομμάτι του αφιερώματος μας είδαμε την αρχιτεκτονική του Spring MVC και τις δυνατότητες που προσφέρει το framework στον προγραμματιστή για να υλοποιήσει μία εφαρμογή στηριζόμενη σε αυτό το J2EE pattern.

Σto σημερινό μας άρθρο θα δούμε μια εξελιγμένη μεθοδολογία που εισήγαγε η ομάδα του Spring που απλοποιεί τη διαδικασία κατασκευής εφαρμογών MVC ιδιαίτερα εκείνες που απαιτούν πολύπλοκες αλληλουχίες φορμών όπως για παράδειγμα ένας wizard, ένα shopping cart κτλ. Η τεχνική αυτή είναι το Spring Webflow.

1. ΕΙΣΑΓΩΓΗ

Φτάσαμε αισίως στο 4ο μέρος της σειράς μας για το Spring. Στο προηγούμενο κομμάτι του αφιερώματος μας είδαμε την αρχιτεκτονική του Spring MVC και τις δυνατότητες που προσφέρει το framework στον προγραμματιστή για να υλοποιήσει μία εφαρμογή στηριζόμενη σε αυτό το J2EE pattern.

Σto σημερινό μας άρθρο θα δούμε μια εξελιγμένη μεθοδολογία που εισήγαγε η ομάδα του Spring που απλοποιεί τη διαδικασία κατασκευής εφαρμογών MVC ιδιαίτερα εκείνες που απαιτούν πολύπλοκες αλληλουχίες φορμών όπως για παράδειγμα ένας wizard, ένα shopping cart κτλ. Η τεχνική αυτή είναι το Spring Webflow.

Continue reading “Spring Framework Series: Μερος 4ο – Spring Webflow”

Πως να κάνετε εγκατάσταση Tomcat 6 σε Ubuntu

Ο Tomcat είναι απο τους αγαπημένους μου application servers για ένα εκκατομύριο λόγους. Ας τον εγκατάστείσουμε λοιπόν στο αγαπημένο OS μου!

Αρχικά ΜΗΝ ΕΓΚΑΤΑΣΤΗΣΕΤΕ Tomcat απο τα REPOSITORIES!! Κάθε φορά που το κάνω το μετανιώνω γιατί μου σπάει τα paths και μαζί με αυτό και τα νεύρα!

Ξεκινάμε λοιπόν, γινόμαστε root και κατεβάζουμε τον Tomcat στη τελευταία έκδοσή του (επι του προκειμένου 6.0.29) στο /var (που με βολεύει εμένα συνήθως 😛 ), κάνουμε αποσυμπίεση και του δίνουμε το “φιλικό” όνομα φακέλου tomcat6 Continue reading “Πως να κάνετε εγκατάσταση Tomcat 6 σε Ubuntu”

Εκμηδενίστε το χρόνο υλοποίησης web εφαρμογών με το Spring Roo

Η υλοποίηση ενός Java project είναι μία δημιουργική διαδικασία που όμως όπως όλοι μας γνωρίζουμε αρκετές φορές εμπεριέχει κάποιες επαναλαμβανόμενες εργασίες  που μειώνουν τον ρυθμό ανάπτυξης και συνήθως τείνουν να είναι κουραστικές για τον προγραμματιστή. Αυτό ακριβώς το θέμα έρχεται να επιλύσει μία πολύ δυναμική τεχνολογία, το Roo από την Springsource.  Σκοπός του είναι να επιτρέψει στον developer να οικοδομήει υψηλής ποιότητας και υψηλής απόδοσης συστήματα σε λίγα μόνο λεπτά. Σε αυτό το άρθρο θα περιγράφεται αναλυτικά τι είναι αυτή η τεχνολογία και παράλληλα θα διαπιστώσουμε μαζί πώς μπορούμε να χτίσουμε μία πλήρως λειτουργική enterprise εφαρμογή σε λιγότερο απο ένα τέταρτο της ώρας.

1. ΕΙΣΑΓΩΓΗ

Η υλοποίηση ενός Java project είναι μία δημιουργική διαδικασία που όμως όπως όλοι μας γνωρίζουμε αρκετές φορές εμπεριέχει κάποιες επαναλαμβανόμενες εργασίες  που μειώνουν τον ρυθμό ανάπτυξης και συνήθως τείνουν να είναι κουραστικές για τον προγραμματιστή. Πόσες φορές για παράδειγμα δεν αγανακτούμε με το POJO που πρέπει να γράψουμε για να αντιστοιχήσουμε τις 100 στήλες ενός πίνακα σε Java πεδία, ή για την για την JSP που πρέπει να εμφανίζει σε φόρμα τα πεδία αυτά για input KAI με τα απαραίτητα validations. Για να μη μιλήσω για το plumbing που πρέπει να γίνει μεταξύ των components ενός τυπικού MVC. Όλα αυτά παίρνουν χρόνο και αποσπούν τη προσοχή από το core της εφαρμογής, δηλαδή το καθεαυτό business logic και μειώνουν, εν τέλει, την παραγωγικότητα.

Spring Framework Series: Μερος 3ο

1. ΕΙΣΑΓΩΓΗ

Καλωσορίσατε στο 3ο μέρος της σειράς για το Spring Framework. Μέχρι τώρα είχαμε την ευκαιρία να δούμε τι είναι το Spring framework και πώς, πολύ γρήγορα, μπορούμε να στήσουμε ένα σημείο εκκίνησης για να κατασκευάσουμε μία web εφαρμογή βασισμένη στην πλατφόρμα αυτή. Πάμε τώρα να δούμε αναλυτικά τον τρόπο λειτουργίας του και τα επιμέρους κομμάτια μίας Spring MVC εφαρμογής.

ΕΤΟΙΜΟΙ; Φύγαμε!

Continue reading “Spring Framework Series: Μερος 3ο”

Glasshish v3 Installation on Ubuntu / Debian

Όλοι όσοι έχουν ασχολιθεί με J2EE development σίγουρα σε κάποια περίοδο έχουν συναντήσει άρθρα τα οποία περιγράφουν το νέο application server της SUN (ORACLE πλέον) τον Glassfish στην περίφημη έκδοσή του την v3.

Η Αλήθεια είναι πως πρόκειται για ένα πολύ μεγάλο βήμα και για έναν πάρα πολύ καλό full j2ee compiant application server ο οποίος έχει πολλές καλές αποκρίσεις και απο πλευράς ταχύτητας αλλά και χρηστηκότητας.

Ας δούμε λοιπόν την εγκατάσταση του σε Ubuntu 10.04 LTS. Με όμοιο τρόπο γίνεται και σε Debian Lenny.

Κάνουμε login σε ένα terminal με χρήστη root ή εναλλακτικά τρέχουμε sudo -i για να έχουμε ισοδύναμη κατάσταση. Εγκαθιστούμε το maven2 και το sun java6 developers kit δίνοντας

[bash]
apt-get -y install maven2 sun-java6-jdk java-common
[/bash]

Continue reading “Glasshish v3 Installation on Ubuntu / Debian”