我是hibernate 2.1.8 +spring+struts 
数据库 sqlserver 2000
我把对hibernate的操作封装在DAO里,将来为业务层使用,
现在运行通过 ^_^public class UserHibernateDAO extends HibernateDaoSupport implements IUserDAO{

public List findUsers(){
return (this.getHibernateTemplate().find("from TUser"));
}

public void saveUser(TUser user){
this.getHibernateTemplate().saveOrUpdate(user);
}

public TUser getUser(Integer userid){
return (TUser)this.getHibernateTemplate().get(TUser.class,userid);
}

public void removeUser(Integer userid){
Object user=this.getHibernateTemplate().load(TUser.class,userid);
this.getHibernateTemplate().delete(user);


}
}

解决方案 »

  1.   

    要在applicationContext.xml (spring的配置文件) 配置的,不配怎么行? 
    我的applicationContext.xml很长
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
    <bean id="dataSource"
          class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
          <property name="driverClassName">
           <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
          </property>
          <property name="url">
           <value>jdbc:microsoft:sqlserver://shyp:1433;DatabaseName=spring</value>
          </property>
          <property name="username">
           <value>sa</value>
          </property>
          <property name="password">
           <value>123abc</value>
          </property>
    </bean> <bean id="sessionFactory"
          class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
      <property name="dataSource">
       <ref local="dataSource" />
      </property>
      <property name="mappingResources">
       <list>
       <value>
       com/lht/bo/TUser.hbm.xml
       </value>
       </list>
      </property>
      <property name="hibernateProperties">
       <props>
       <prop key="hibernate.dialect">
       net.sf.hibernate.dialect.SQLServerDialect
       </prop>
       <prop key="hibernate.show_sql">
       true
       </prop>
       </props>
      </property>
    </bean>

    <bean id="transactionManager"
          class="org.springframework.orm.hibernate.HibernateTransactionManager" > 
      <property name="sessionFactory">
       <ref local="sessionFactory" />
      </property>
    </bean>
    <bean id="userDAO" class="com.lht.bo.base.UserHibernateDAO">
    <property name="sessionFactory">
    <ref local="sessionFactory"/>
    </property>
    </bean>
    <bean id="userServiceTaget" class="com.lht.bo.base.IUserServiceImpl">
    <property name="userDAO">
    <ref local="userDAO"/>
    </property>
    </bean>
    <bean id="userService"
      class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
      <property name="transactionManager">
       <ref bean="transactionManager" />
      </property>
      
      <property name="target">
       <ref local="userServiceTaget"/>
      </property>   <property name="transactionAttributes">
       <props>
       <prop key="save*">PROPAGATION_REQUIRED</prop>
       <prop key="remove*">PROPAGATION_REQUIRED</prop>
       <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
       <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
       </props>
      </property>
    </bean>
    </beans>
      

  2.   

    需要spring配置文件的,HibernateDaoSupport有一个
    private HibernateTemplate hibernateTemplate;
    需要通过IOC机制注入进去,没有配置文件,hibernateTemplate自然也就是null了
    HibernateTemplate 中的find方法是调用Query的find方法。
    不过hibernate 3.0中包结构都变了,估计与3.0一起用会有问题。
      

  3.   

    spring 的有一项核心技术就是他的"依赖注入",这个"依赖注入"我目前的经验是是靠xml配置文件来提供给spring信息来加载bean的.
      

  4.   

    我是先用hibernate的(配置文件全好了),测试成功后,想试一下spring,网上查了好多的例子,好像是不用配置文件的。
      

  5.   

    兄弟,不用spring的配置文件是不行的
    直接使用你的dao进行操作,会出现NullPointException
    spring号称组件松散耦合,但对于这点就不太苟同了.
    非要使用一堆的接口,一堆的service,然后getService().getDAO().create()....
    那在一般的情况下,如果不依赖spring的注入,就无法使用((new dao()).create())对数据库的进行操作了实在不解