zynif Δημοσ. 14 Απριλίου 2015 Δημοσ. 14 Απριλίου 2015 Καλημέρα. Έχω αυτήν εδώ την βάση SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; CREATE TABLE IF NOT EXISTS `Authors` ( `AutID` int(11) NOT NULL, `Name` varchar(50) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; INSERT INTO `Authors` (`AutID`, `Name`) VALUES (1, 'Tolkien'); CREATE TABLE IF NOT EXISTS `Books` ( `BookID` int(11) NOT NULL, `AutID` int(11) NOT NULL, `Name` varchar(50) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; INSERT INTO `Books` (`BookID`, `AutID`, `Name`) VALUES (1, 1, 'LOTR'); ALTER TABLE `Authors` ADD PRIMARY KEY (`AutID`); ALTER TABLE `Books` ADD PRIMARY KEY (`BookID`), ADD KEY `AutID` (`AutID`); ALTER TABLE `Authors` MODIFY `AutID` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2; ALTER TABLE `Books` MODIFY `BookID` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2; ALTER TABLE `Books` ADD CONSTRAINT `fkautid` FOREIGN KEY (`AutID`) REFERENCES `Authors` (`AutID`) ON DELETE NO ACTION ON UPDATE NO ACTION; Έστω ότι θέλω να βάλω στην βάση ένα άλλο βιβλίο από τον Tolkien. Το κάνω με τον παρακάτω κώδικα public static void main(String[] args) { try { BufferedReader br=new BufferedReader(new InputStreamReader (System.in)); System.out.println("Book Name"); String NamensBook=br.readLine(); HibernateUtil myHiber=new HibernateUtil(); SessionFactory sessFabrika=myHiber.getSessionFactory(); Session s = sessFabrika.openSession(); s.beginTransaction(); //get author Query q=s.createQuery("FROM Authors Where Name=:n"); q.setParameter("n", "Tolkien"); Authors Auth=(Authors) q.list().get(0); Books b=new Books(); b.setAuthors(Auth); b.setName(NamensBook); s.save(; s.getTransaction().commit(); s.close(); System.out.println("ΟΚ"); } catch (Exception ex) { ex.printStackTrace(); } } Είναι όμως αυτός ο ενδεδειγμένος τρόπος ; Θέλω να πώ εαν είχα κι άλλα foreign keys στον πίνακα Books θα πρέπει να κάνω query την βάση για να παίρνω τα αντίστοιχα objects ;
ZAKKWYLDE Δημοσ. 15 Απριλίου 2015 Δημοσ. 15 Απριλίου 2015 Είναι όμως αυτός ο ενδεδειγμένος τρόπος ; Θέλω να πώ εαν είχα κι άλλα foreign keys στον πίνακα Books θα πρέπει να κάνω query την βάση για να παίρνω τα αντίστοιχα objects ; Ναι αυτός είναι ο ενδεδειγμένος τρόπος. Μάλιστα αν είχες Bi-directional relation - δηλαδή αν ο Author είχε List<Book>, θα έπρεπε να προσθέσεις και το Book στη λιστα του author για να έχεις consistent objects. Εξαίρεση: αν ήξερες το Primary Key του author θα μπορούσες να κάνεις new Author() και set to primary key και θα έβρισκε ποιός είναι. Τέλος διάβασε 2 πράγματα για τα Java naming conventions, ποτέ τα variables με κεφαλαίο. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα