----------------------------------------------------------
quote:
我是这样的结构Action调用Service,Service调用Dao
Service及Dao都用spring的配置文件配置的
----------------------------------------------------------
是这个样子的,首先是写个Hibernate的DAO Interface和DAO implements,然后在你的业务层去写个Service Interface,在此接口中定义一些你需要的DAO的set方法,再写一个Service implements.----------------------------------------------------------
quote:
我试着把spring配置的对象及hibernate的vo及*.hbm.xml都放到myweb\WEB-INF\classes中
发觉应用就找不到这些类
---------------------------------------------------------
你的vo和*.hbm.xml文件你建立一个package,把这些文件都放到package里面,分开也行(Hibernate映射的时候都把这些pojo和hbm.xml文件放到一个package里面了,建议还是放在一起),你在Spring的ApplicationContext.xml文件里面配置Hinbernate SessionFactory 指定mappingResources属性时,指定正确的路径就可以了。

解决方案 »

  1.   

    ---------------------------------------------------
    quote:
    是这个样子的,首先是写个Hibernate的DAO Interface和DAO implements,然后在你的业务层去写个Service Interface,在此接口中定义一些你需要的DAO的set方法,再写一个Service implements.
    ---------------------------------------------------
    其实我也是依样划葫芦,其实真的没有明白这样做的道理,哪里有这方面的资料可以学习啊??
    ---------------------------------------------------
    quote:
    你的vo和*.hbm.xml文件你建立一个package,把这些文件都放到package里面,分开也行(Hibernate映射的时候都把这些pojo和hbm.xml文件放到一个package里面了,建议还是放在一起),你在Spring的ApplicationContext.xml文件里面配置Hinbernate SessionFactory 指定mappingResources属性时,指定正确的路径就可以了。
    ---------------------------------------------------
    正确的路径?我还是没有理解
    我的理解是,你写一个类,不管是打成package放lib 或直接放到WEB-INF\classes都一样
    都用com.***.***引用都能找到啊,
    为什么spirng配置的类不行呢?
      

  2.   

    可以先看下面这两篇文章,大概的了解下,心里有个基本的轮廓。
    http://www.blogjava.net/limq/archive/2005/09/20/13565.html
    http://java.chinaitlab.com/Struts/39925.html
      

  3.   

    是这个样子的,首先是写个Hibernate的DAO Interface和DAO implements,然后在你的业务层去写个Service Interface,在此接口中定义一些你需要的DAO的set方法,再写一个Service implements.
    ---------------------------------------------------
    其实我也是依样划葫芦,其实真的没有明白这样做的道理,哪里有这方面的资料可以学习啊??
    ---------------------------------------------------多做点spring的项目和多看设计模式,你就会慢慢理解它的依赖注入(注入的方式有几种,你用的set注入是比较常用的一种,注入一是可以接耦,二降低容器侵入,方便代码移植),定义口是为了接口与实现分离(桥梁模式),在spring中还有很多的FactoryBean,拦截器(AOP)和模板(代理模式和模板方法模式等)...--------------------------------------------------------------------------------
    quote:
    你的vo和*.hbm.xml文件你建立一个package,把这些文件都放到package里面,分开也行(Hibernate映射的时候都把这些pojo和hbm.xml文件放到一个package里面了,建议还是放在一起),你在Spring的ApplicationContext.xml文件里面配置Hinbernate SessionFactory 指定mappingResources属性时,指定正确的路径就可以了。
    ---------------------------------------------------
    正确的路径?我还是没有理解
    我的理解是,你写一个类,不管是打成package放lib 或直接放到WEB-INF\classes都一样
    都用com.***.***引用都能找到啊,
    为什么spirng配置的类不行呢?----------------------------------------------------------------------所谓正确的路径就是你的类装载器能够找到的位置,spring中不是有个ApplicationContext吗,你可以在构造你的bean工厂的时候就把路径告诉它.不过不建议你把把spring配置的对象及hibernate的vo及*.hbm.xml都放到myweb\WEB-INF\classes中,既然用到了spring框架用到了分层,咱们就还是要把它分开的,业务层的东西表放到表示层去.你打包放到lib中能找到是因为你的..\lib路径在classpath路径中,不管打不打包都是能找到的,而myweb\WEB-INF\classes这个路径是你的web容器(也许你是用tomcat)提供的类装载器才找得到的,除非你把它也配到classpath中(tomcat会为每个WEB应用配一个WebContextLoader<类装载器>,这样把它们阁在不同的命名空间中,是它的安全机制之一<关于它的内容很多,这里就不说了>).
      

  4.   

    可以先看下面这两篇文章,大概的了解下,心里有个基本的轮廓。
    http://www.blogjava.net/limq/archive/2005/09/20/13565.html
    http://java.chinaitlab.com/Struts/39925.html文章不错!!!
      

  5.   

    如果你把*.hbm.xml直接放在 classes目錄下面是找不到的。應該放到classes相應的包下面然後在spring配置文件可這樣寫
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="dataSource"></ref>
    </property>
    <property name="mappingResources">
    <list>
    //注意這裡是classes文件下面的包
    <value>struts\spring\hibernate\model\UserTest.hbm.xml</value>
    </list>
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="dialect">org.hibernate.dialect.SQLServerDialect</prop>
        <prop key="hibernate.show_sql">true</prop>
    </props>
    </property>
    </bean>
      

  6.   

    需要注意的是,你编程应该是针对接口编程,而不是针对实现类去编程。
    在Spring的配置的时候,对接口注入的是接口实现的类。
      

  7.   

    我的java群:10815536 开源系列
      

  8.   

    原电脑javascript执行问题不能给分,所以现在才给
    谢谢各位!!