Spring + Hibernate
Большинству интернет-приложений необходимо сохранять результаты своей работы в базу данных. На java, сделать это можно с помощью различный фреймворков, одим из который является Hibernate.
Для работы с базой данных, используются объекты HibernateTemplate и Session. Причем второй появляется только внутри HibernateCallback. В свою очередь, HibernateCallback вызывается из метода execute объекта класса HibernateTemplate. Таким образом, для работы с базой данных, нам необходимо получить HibernateTemplate. Для этого необходимо в контексте приложения создать SessionFactory, следовательно, должна быть создана связь с базой данных. Поэтому в проет необходимо включить драйвер СУБД. В нашем случае - MySql.
XML:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency>
Теперь можно создать DataSource и SessionFactory:
XML:
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost/test" /> <property name="username" value="root" /> <property name="password" value="root" /> </bean> <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="myDataSource" /> <property name="mappingResources"> <list> </list> </property> <property name="hibernateProperties"> </property> </bean>
В файле person.hbm.xml храниться информация о соответствии полей объекта Person и столбцов таблицы базы данных. Ниже приведен листинг этого файла.
XML:
Теперь можно перейти к созданию доменного объекта и объекта доступа к данным. Класс Person имеет поля, соответствующие именам параметров в файле Person.hbm.xml. В классе PersonDao создается hibernateTemplate, с помощью которого реализуются методы работы с данными:
JAVA:
public class PersonDAO { private HibernateTemplate hibernateTemplate; public void setSessionFactory(SessionFactory sf){ this.hibernateTemplate = new HibernateTemplate(sf); } @SuppressWarnings("unchecked") public List<Person> getAllPersons(){ return hibernateTemplate.loadAll(Person.class); } }
Бин PersonDAO должен быть прописан в контексте, где ему в качестве параметра передается SessionFactory:
XML:
<bean id="personDAO" class="ru.vaniashev.dao.PersonDAO"> <property name="sessionFactory" ref="mySessionFactory"/> </bean>
На этом конфигурация закончена. Теперь объект personDAO можно передавать в контроллеры и получить с помощью него список объектов класса Person.

16 Июнь 2009 в 1:42 пп
Вы используете MySQL, а hibernate.dialect=org.hibernate.dialect.HSQLDialect. Ошибка или так задумано?
16 Июнь 2009 в 5:13 пп
Да. Это ошибка! Спасибо!