Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdClara Goossens Laatst gewijzigd meer dan 10 jaar geleden
1
Hibernate Object relational mapping http://www.hibernate.org/
2
Problemen ● Objecten moeten van en naar de database komen ● Zuivere JDBC is veel boilerplate code: – ResultSets omzetten in transfer objects – Code schrijven voor elke select, insert, update en delete
3
Oplossing ● Hibernate als ondersteuning voor je DAO's ● 1 object = 1 record (*) ● 1 class = 1 tabel (*) ● Mapping van class naar tabel externaliseren in.hbm.xml ● Object geörienteerde queries (HQL) als alternatief voor relationeel geörienteerde queries (SQL)
4
Layered architecture Presentation layer DAO layer Service layer Transfer objects MySQL Hibernate
5
Hibernate in Spring ● QuestionDao extend HibernateDaoSupport ● Gebruik getHibernateTemplate().* in QuestionDao ● Configureer LocalSessionFactoryBean als sessionFactory – DataSource – Properties – Mapping locations ● Injecteer de sessionFactory in DAO ● Configureer mapping bestanden
6
HibernateDaoSupport ● public class QuestionDaoImpl extends HibernateDaoSupport implements QuestionDao { public List findAllQuestions() { return getHibernateTemplate().loadAll(Question.class); } public void storeQuestion(Question question) { getHibernateTemplate().saveOrUpdate(question); } public void deleteQuestion(Question question) { getHibernateTemplate().delete(question); } }
7
SessionFactory (1) ● Definieer een DataSource in spring:
8
SessionFactory (2) ● org.hibernate.dialect.MySQLDialect true update...
9
SessionFactory (3) ●... classpath:/be/kahosl/museumapp/to/Question.hbm.xml
10
Mapping bestand ● Question.hbm.xml ● Demo: vergelijking met Question.java
11
Workshop: Hibernate ● interface be.kahosl.museumapp.dao.QuestionDao – List findAllQuestions(); – void storeQuestion(Question question); – void deleteQuestion(Question question); ● class be.kahosl.museumapp.dao.QuestionDaoImpl – Implementeer met getHibernateTemplate().* ● Configureer dataSource en sessionFactory in generalContext.xml ● Kopieer Question.hbm.xml van de website ● Configureer Question.hbm.xml ● Pas QuestionService aan en run Museumapp ● Bekijk de database met de Query browser, verifieer dat er een nieuwe tabel Question is (refresh) ● Voer uit in de Query browser: insert into question(id, text, points) values (1234, 'Where are you?', 10) ● Run Museumapp
12
Workshop: testdata ● create ● Injecteer questionDao in testDataCreator ● TestDataCreator implements InitializingBean – afterPropertiesSet() wordt door Spring aangeroepen nadat alle dependencies zijn geinjecteerd – Zorg ervoor dat afterPropertiesSet() elk Question testobject opslaat in de databank
13
Answer.hbm.xml ●
14
List mapping ●...
15
HQL ● SQL maar voor objecten, geen select: public List findAllQuestionsWithMinimumPoints( int minimumPoints) { return getHibernateTemplate().find( "from Question where points > ?", new Integer(minimumPoints) ); } ● Quick & dirty test: QuestionDao questionDao = (QuestionDao) applicationContext.getBean("questionDao"); List questionList2 = questionDao.findAllQuestionsWithMinimumPoints(8); System.out.println("Size: " + questionList2.size());
16
Support ● Hibernate website http://www.hibernate.org/ http://www.hibernate.org/ ● Hibernate forum http://forum.hibernate.org/ http://forum.hibernate.org/ ● Hibernate documentatie http://www.hibernate.org/5.html http://www.hibernate.org/5.html ● Hibernate boeken – Hibernate in action ● Demo: documentatie native SQL
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.