De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Hibernate Object relational mapping

Verwante presentaties


Presentatie over: "Hibernate Object relational mapping"— Transcript van de presentatie:

1 Hibernate Object relational mapping

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 ● Hibernate forum ● Hibernate documentatie ● Hibernate boeken – Hibernate in action ● Demo: documentatie native SQL


Download ppt "Hibernate Object relational mapping"

Verwante presentaties


Ads door Google