Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate и Spring AOP для реализации DAO 
:(
    Опции темы
semenyuk
  Дата 27.7.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.10.2009

Репутация: нет
Всего: нет



Есть такая статья Не повторяйте DAO!, прочитав эту статью сразу захотелось применить Spring AOP.
Создал тестовый проект.
Подключил библиотек hibernate, описал настройки в 
hibernate.cfg.xml
Код
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
    <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/test</property>
    <property name="hibernate.connection.username">postgres</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.connection.password">123</property>
    <mapping resource="hibernate/Stats.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

Создал маппинг Stats.hbm.xml
Код
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 27.07.2010 15:24:16 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
    <class name="deloplus.hibernate.Stats" table="stats" schema="public" lazy="false">
        <id name="statsid" column="statsid" >
            <generator class="increment" />
        </id>
        <property name="name" type="string">
            <column name="name" not-null="true">
            </column>
        </property>
        <property name="description" type="string">
            <column name="description">
            </column>
        </property>
    </class>
</hibernate-mapping>

Создал класс Stats.java
Код
package hibernate;
import java.util.HashSet;
import java.util.Set;

public class Stats  implements java.io.Serializable {

     private Long statsid;
     private String name;
     private String description;
     private Set announcmentses = new HashSet(0);

    public Stats() {
    }

    public Stats(Long statsid, String name) {
        this.statsid = statsid;
        this.name = name;
    }
   
    public Long getStatsid() {
        return this.statsid;
    }
    
    public void setStatsid(Long statsid) {
        this.statsid = statsid;
    }
    public String getName() {
        return this.name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    public String getDescription() {
        return this.description;
    }
    
    public void setDescription(String description) {
        this.description = description;
    }
}

Написал обобщенный интерфейс
DAO GenericDao.java
Код
public interface GenericDao <T, PK extends Serializable> {

    /** Сохранить объект newInstance в базе данных */
    PK create(T newInstance);

    /** Извлечь объект, предварительно сохраненный в базе данных, используя
     *   указанный id в качестве первичного ключа
     */
    T read(PK id);

    /** Сохранить изменения, сделанные в объекте.  */
    void update(T transientObject);

    /** Удалить объект из базы данных */
    void delete(T persistentObject);
}

Написал реализация интерфейса
GenericDaoHibernateImpl.java
Код
public class GenericDaoHibernateImpl <T, PK extends Serializable>
    implements GenericDao<T, PK>, FinderExecutor {
    private Class<T> type;

    public GenericDaoHibernateImpl(Class<T> type) {
        this.type = type;
    }

    public PK create(T o) {
        return (PK) getSession().save(o);
    }

    public T read(PK id) {
        return (T) getSession().get(type, id);
    }

    public void update(T o) {
        getSession().update(o);
    }

    public void delete(T o) {
        getSession().delete(o);
    }

    // Не показаны реализации getSession() и setSessionFactory()
            }


До этого момента у меня все работает, написал тесты, все прошло.
А дальше не могу понять каким образом к данному проекту привязать Spring AOP.
На сколько я понимаю мне нужно создать спринг конфиг, подключить спринг проект а дальше??
Подскажите кто может опишите порядок действия, или хотя-бы что дальше?
Заранее благодарен.
PM MAIL   Вверх
kosmonaFFFt
Дата 28.7.2010, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



А для каких целей нужен AOP?


--------------------
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0407 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.