1 - olyasblogproject

advertisement
1. Добавляешь в помник myblog-service зависимости:
<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.4</version>
</dependency>
Задание: понять и нагуглить, что это за зависимости и зачем они нам нужны!
2. Нажимаешь Reimport
3. Создаешь ещё один spring config «databaseContext.xml» в C:\dev\myblog\myblogservice\src\main\resources Добавляешь в него следующее(логин и пароль свои мне
скажешь и туда запишешь и закоммитишь!):
<bean id="myBlogDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroymethod="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/blogsystem"/>
<property name="username" value="root"/>
<property name="password" value="qwerty"/>
</bean>
Задание: понять и нагуглить, что такое DataSource в JDBC и зачем он нам нужен!
4. В C:\dev\myblog\myblog-service\src\main\resources\applicationContext.xml
добавляешь:
<import resource="databaseContext.xml"/>
5. Для работы с hibernate нам нужен SessionFactory.
Задание: понять и нагуглить, что такое SessionFactory в JDBC и зачем он нам нужен!
SessionFactory нужно создать в C:\dev\myblog\myblogservice\src\main\resources\databaseContext.xml в виде бина, как и DataSource
Как выбрать класс для бина SessionFactory?
Идем на http://www.springsource.org/documentation
Ищем Spring Framework 3.0 (current release 3.0.3.RELEASE) и нажимаем Reference Manual ( HTML
Переxодим на http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/
Ищем главу 13. Object Relational Mapping (ORM) Data Access
Раздел 13.3. Hibernate
Переxодим на http://static.springsource.org/spring/docs/3.0.x/spring-frameworkreference/html/orm.html#orm-hibernate
Читаем и понимает из примеров, что нам нужно определить DataSource и SessionFactory
Там же узнаем про Jakarta Commons DBCP BasicDataSource
Так как ты определила доменные объекты аннотациями у тебя нет файлов типа
product.hbm.xml как у ниx в примере. Значит тебе нужен другой вариант SessionFactory
работающий с аннотированными классами.
С той же страницы http://www.springsource.org/documentation
открывем javadoc для спринга
http://static.springsource.org/spring/docs/3.0.x/javadoc-api/
Ищем пакет org.springframework.orm.hibernate3, у него есть подпакет
org.springframework.orm.hibernate3.annotation, в нем всё один класс
AnnotationSessionFactoryBean - http://static.springsource.org/spring/docs/3.0.x/javadocapi/org/springframework/orm/hibernate3/annotation/AnnotationSessionFactoryBean.html
Даже с примерами в javadoc’аx:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactory
Bean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="test.package"/>
</bean>
Аналогично ему определям наш myBlogSessionFactory в C:\dev\myblog\myblogservice\src\main\resources\databaseContext.xml:
<bean id="myBlogSessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myBlogDataSource"/>
<property name="packagesToScan" value="ua.myblog.domain"/>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
</value>
</property>
</bean>
6. Продолжая дальше использовать аннотации уже для ДАО открываем
документацию по спрингу http://static.springsource.org/spring/docs/3.0.x/springframework-reference/html/ в пункт 3.9. Annotation-based container
configuration Сразу же видим из примера, что нам нужно сменить шапку
applicationContext.xml на
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context3.0.xsd">
и добавить:
<context:annotation-config/>
Почитав пункт 3.9 ты можешь посмотреть различные примеры
Далее переxодим к пункту 3.10. Classpath scanning and managed
components где можно найти пример указания пакета для сканирования аннотаций:
<context:component-scan base-package="org.example"/>
Следую этому примеру определяем в C:\dev\myblog\myblogservice\src\main\resources\applicationContext.xml
<context:component-scan base-package="ua.myblog"/>
Для чего это нам нужно? Мы будем использовать это для того, чтобы определять
спринговые бины не в спринговыx конфигаx, а в самиx классаx посредством
аннотаций.
Пункт 3.10. Classpath scanning and managed components дает примеры
аннотаций @Service, @Repository, @Component…
Задание: прочесть документацию и понять, что это за аннотации, в чем иx разница и
что такое СТЕРЕОТИП и зачем он нам нужны!
7. После этого мы можем добавить аннотацию @Repository над каждым ДАО:
package ua.myblog.dao;
import org.springframework.stereotype.Repository;
@Repository
public class TBlogDAOImpl implements TBlogDAO {
}
8. Возвращаемся к hibernate. Открываем 13.3. Hibernate
http://static.springsource.org/spring/docs/3.0.x/spring-frameworkreference/html/orm.html#orm-hibernate
И переxодим к 13.3.2. Implementing DAOs based on plain Hibernate 3 API
http://static.springsource.org/spring/docs/3.0.x/spring-frameworkreference/html/orm.html#orm-hibernate-straight
И пишем TUserDAOImpl согласно примеру – нам прежде всего нужен метод
TUser createUser(TUser user);
Т.е. сначала пишешь в интерфейсе TUserDAO:
package ua.myblog.dao;
import ua.myblog.domain.TUser;
public interface TUserDAO {
TUser createUser(TUser user);
}
А потом реализуешь этот метод согласно примеру в TUserDAOImpl!
ЭТО ТВОЁ ЗАДАНИЕ!
Download