Есть такая статья Не повторяйте 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. На сколько я понимаю мне нужно создать спринг конфиг, подключить спринг проект а дальше?? Подскажите кто может опишите порядок действия, или хотя-бы что дальше? Заранее благодарен.
|