Большинству интернет-приложений необходимо сохранять результаты своей работы в базу данных. На java, сделать это можно с помощью различный фреймворков, одим из который является .

Для работы с базой данных, используются объекты HibernateTemplate и Session. Причем второй появляется только внутри HibernateCallback. В свою очередь, HibernateCallback вызывается из метода execute объекта класса HibernateTemplate. Таким образом, для работы с базой данных, нам необходимо получить HibernateTemplate. Для этого необходимо в контексте приложения создать SessionFactory, следовательно, должна быть создана связь с базой данных. Поэтому в проет необходимо включить драйвер СУБД. В нашем случае - MySql.


XML:
  1. <dependency>
  2.   <groupId>mysql</groupId>
  3.   <artifactId>mysql-connector-java</artifactId>
  4.   <version>5.1.6</version>
  5. </dependency>
  6. <dependency>
  7.   <groupId>commons-dbcp</groupId>
  8.   <artifactId>commons-dbcp</artifactId>
  9.   <version>1.2.2</version>
  10. </dependency>

Теперь можно создать DataSource и SessionFactory:


XML:
  1. <bean id="myDataSource"
  2.     class="org.apache.commons.dbcp.BasicDataSource"
  3.     destroy-method="close">
  4.     <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  5.     <property name="url" value="jdbc:mysql://localhost/test" />
  6.     <property name="username" value="root" />
  7.     <property name="password" value="root" />
  8.   </bean>
  9.   <bean id="mySessionFactory"
  10.     class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  11.     <property name="dataSource" ref="myDataSource" />
  12.     <property name="mappingResources">
  13.       <list>
  14.         <value>ru/vaniashev//person.hbm.xml</value>
  15.       </list>
  16.     </property>
  17.     <property name="hibernateProperties">
  18.       <value>.dialect=org..dialect.HSQLDialect</value>
  19.     </property>
  20.   </bean>

В файле person.hbm.xml храниться информация о соответствии полей объекта Person и столбцов таблицы базы данных. Ниже приведен листинг этого файла.


XML:
  1. <?xml version="1.0"?>
  2. <!DOCTYPE -mapping PUBLIC "-/// Mapping DTD 3.0//EN"
  3. "http://.sourceforge.net/-mapping-3.0.dtd">
  4. <-mapping>
  5.  
  6.   <class name="ru.vaniashev.models.Person" table="person">
  7.     <id name="id" column="id">
  8.       <generator class="native" />
  9.     </id>
  10.     <property name="firstname" />
  11.     <property name="lastname" />
  12.     <property name="age" />
  13.   </class>
  14.  
  15. </-mapping>

Теперь можно перейти к созданию доменного объекта и объекта доступа к данным. Класс Person имеет поля, соответствующие именам параметров в файле Person.hbm.xml. В классе PersonDao создается hibernateTemplate, с помощью которого реализуются методы работы с данными:


JAVA:
  1. public class PersonDAO {
  2.  
  3.     private HibernateTemplate hibernateTemplate;
  4.  
  5.     public void setSessionFactory(SessionFactory sf){
  6.         this.hibernateTemplate = new HibernateTemplate(sf);
  7.     }
  8.  
  9.     @SuppressWarnings("unchecked")
  10.     public List<Person> getAllPersons(){
  11.         return hibernateTemplate.loadAll(Person.class);
  12.     }
  13.  
  14. }

Бин PersonDAO должен быть прописан в контексте, где ему в качестве параметра передается SessionFactory:


XML:
  1. <bean id="personDAO" class="ru.vaniashev.dao.PersonDAO">
  2.     <property name="sessionFactory" ref="mySessionFactory"/>
  3.   </bean>

На этом конфигурация закончена. Теперь объект personDAO можно передавать в контроллеры и получить с помощью него список объектов класса Person.

Связанные записи