spring 과 Hibernate 통합

spring 과 Hibernate 통합

spring       hibernate  ,spring hibernate            dao      ,       JDBC,JDO,IBATIS, TOPLINK,                   。
   spring hibernate    :
#  HibernateTemplate Callback    。
#  HibernateDaoSupport   AOP  
IOC/HibernateTemplate     JdbcTemplate      ,      HibernateDaoSupport/AOP  。
       Hibernate      ,       :
1。  Hibernate SessionFactory。
2。  DAO    HibernateDaoSupport
3。  AOP      
         :
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="model">
  <class name="Widget" table="WIDGETS">
    <id name="id" column="WIDGET_ID" type="long">
      <generator class="native"/>
    </id>
    <property name="name" column="NAME" type="string"/>
    <property name="size" column="SIZE" type="int"/>
  </class>
</hibernate-mapping>
             ,Widget        (    ,        )      SessionFactory:
        spring SessionFactory  ,            hibernate-config.xml  。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="mappingResources">
      <list>
        <value>Widget.hbm.xml</value>
      </list>
    </property>
  </bean>
        hibernate.properties  ,spring  LocalSessionFactoryBean              ,dialect    。    spring    DataSource      LocalSessionFactoryBean   。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="mappingResources">
      <list>
        <value>Widget.hbm.xml</value>
      </list>
    </property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
      </props>
    </property>
    <property name="dataSource">
      <ref bean="dataSource"/>
    </property>
  </bean>
  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName"><value>org.hsqldb.jdbcDriver</value></property>
    <property name="url"><value>jdbc:hsqldb:mem:widgets</value></property>
    <property name="username"><value>sa</value></property>
    <property name="password"><value></value></property>
  </bean>
    DAO     HibernateDaoSupport。
spring  HibernateDaoSupport            Hibernate  ,        HibernateTemplate     。
   ,Hibernate2      HibernateException  Hibernate3       。    Hibernate3         。                    。
 public class WidgetDAOHibernateImpl extends HibernateDaoSupport implements WidgetDAO {
  public Collection getWidgets() {
   return getHibernateTemplate().loadAll(Widget.class);
  }
  public Widget getWidgetById(Long id) {
   return (Widget)getHibernateTemplate().load(Widget.class,id);
  }
  public Widget saveWidget(Widget widget) {
   getHibernateTemplate.saveOrUpdate(widget);
   return widget;
  }
 }
          ,    DAO  HibernateINterceptor    ,            Hibernate Session     ,               。             ,          。     “widgetDAO”         ,             "widgetDaoTarget"。
<!-- THE HIBERNATE INTERCEPTOR -->
  <bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor">
    <property name="sessionFactory">
      <ref bean="sessionFactory"/>
    </property>
  </bean>
  <bean id="widgetDaoTarget" class="WidgetDAOHibernateImpl">
    <property name="sessionFactory">
      <ref bean="sessionFactory"/>
    </property>
  </bean>
  <bean id="widgetDAO" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="proxyInterfaces">
      <value>com.zabada.springrecipes.base.WidgetDAO</value>
    </property>
    <property name="interceptorNames">
      <list>
        <value>hibernateInterceptor</value>
        <value>widgetDaoTarget</value>
      </list>
    </property>
  </bean>

  
  

좋은 웹페이지 즐겨찾기