解决方案 »

  1.   

    1.我测试了下程序是运行到getcurrentsession就停止了,是因为没初始化吗?要怎么配置初始化(XML方式)?如果不是因为这个问题,是因为啥(30)2.能否同时使用XML和注解配置spring,以此程序为例,sessionFactory是按照XML配而下面EmployeeDao我想用注释配是否可以,该怎么做?(spring)学得不精(30)3.下面的transactionManager配置是干什么用的myeclipse自动生成了,可我似乎没用到啊(10)4.求详解一下currentsession,之前学hibernate没用过,都是打开session,然后自己关闭session,整合spring的时候一直不理解,网上的整合的例子似乎从来不关闭session,难道不用关闭么?一直使用getcurrentsession是否就意味着当只有一个用户时永远只有一个session存在?(10分)
      

  2.   

    1.你都没创建session,哪来的session呢?
    2.既然你都继承了HibernateDaoSupport这个类,直接this.getHibernateTample.save(Object  obj)就可以保存了呀,干嘛还要session呢?
    3.那个是事务控制
    4.session开了就必须关闭,和数据库一样。至于在哪儿关闭,如果个人做练习就可以随便点,哪儿开的哪儿关。如果是项目的话最好还是统一的关闭,这时是在spring里面配置的。
      

  3.   

    我就是想问在这里怎么弄session呢,难道也要价值spring然后getbean么,HibernateDaoSupport忘修改了,hibernate4+spring不支持hibernateTample了貌似所以才在改用getcurrentsession,但不知道该怎么改
      

  4.   

    这两个配置文件怎么一样?是不是拷错了,你都没有配置dataSource
      

  5.   

    就你的这个问题,一看就知道是没有注入sessionfactory的原因,因为你的配置文件中没有配置数据源骚年,建议你上spring的官网去看文档,里面有详细的介绍。比起你从网上东拼西凑弄出来的更能学到知识。
    http://docs.spring.io/spring/docs/4.0.8.RELEASE/spring-framework-reference/htmlsingle/
    这是4.0.8版本的详细介绍文档
    看这个还有一个好处就是锻炼你的英语水平,其实不必每个单词都要认识,我英语连4级都没过,基本上还是能够看懂的
      

  6.   

    把Hibernate的配置文件也贴出来看看
      

  7.   


    去看官方文档吧!骚年,你的Datasource没有注入,就拿不到工厂
      

  8.   

    给你一个参考例子:
     <context:annotation-config/>
      <context:component-scan base-package="cn.study"></context:component-scan>
     
     
     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
     <property name="url" value="jdbc:mysql://localhost:3306/hibernate"/>
     <property name="username" value="root"/>
     <property name="password" value="123456"/>
    </bean>    //此时通过代码输入可以判断生成的是org.hibernate.internal.SessionFactoryImpl@151b0a5
      <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="annotatedClasses"> //使用注解的方式注释,即在User中以注解声明
          <list>
            <value>cn.study.model.User</value>//可以有多个值,对应多张表
          </list>
        </property>
        <!--        //也可以设置mappingLocations
          <property name="mappingResources">//使用xml的方式进行配置
          <list>
            <value>product.hbm.xml</value>
          </list>
        </property>    -->    <property name="hibernateProperties">
          <props>
           <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
          </props>
        </property>
      </bean>
    </beans>
    @Component("userService") //可以省略这个名字,因为默认是userService
    public class UserService {
     public UserDao dao;
      //省略其他get,set方法
     @Resource
     public void setDao(UserDao dao) {
      this.dao = dao;
     }
     public void addUser(User u){
      dao.save(u);
     }
    }@Entity
    public class User {
     public int id;
     public String name;
     //省略其他get,set方法
     @Id
     @GeneratedValue
     public int getId() {
      return id;
     }}
    @Component
    public class UserDaoImpl implements UserDao {
     public SessionFactory sessionFactory;
     public SessionFactory getSessionFactory() {
      return sessionFactory;
     }
     @Resource
     public void setSessionFactory(SessionFactory sessionFactory) {
      this.sessionFactory = sessionFactory;
     }
     @Override
     public void save(User user){
      Session s=sessionFactory.openSession();
      s.beginTransaction();
      s.save(user);
      s.getTransaction().commit();
     }
    }
    public class ServiceTest {
     @Test
     public void AddTest() throws Exception{
      ApplicationContext ctx=new ClassPathXmlApplicationContext("bean.xml");
      UserService service=ctx.getBean("userService", UserService.class);
      User user=new User();
      user.setName("general");
      service.addUser(user);
      System.out.println(service.getDao());
     }}
      

  9.   

    hibernate.cfg.xml贴错了,重新贴了
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration><session-factory>
    <property name="myeclipse.connection.profile">myconnector</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/ssh?characterEncoding=UTF-8</property>
    <property name="connection.username">root</property>
    <property name="connection.password">admin</property>
    <property name="connection.driver_class">
    com.mysql.fabric.jdbc.FabricMySQLDriver
    </property>
    <property name="dialect">
    org.hibernate.dialect.MySQLDialect
    </property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <mapping resource="com/ssh/bean/Employee.hbm.xml"></mapping></session-factory></hibernate-configuration>白天有事8L的办法我晚上再看看
      

  10.   

    hibernate版本是多少?DAO中的sessionFactory可以不写getter/setter方法的,你注入了就可以了,另外,Spring配置文件里面,你注入的SessionFactory可以用数据源的方式注入,dataSource,详细情况看博客:http://blog.csdn.net/u012453619/article/details/40261663
      

  11.   

    楼主都没有配置datasource...请看8楼的列子。