附上hibernate配置
<?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>        <!-- Database connection settings -->
        <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mysport</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">linke</property>        <!-- SQL dialect -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        
        <!-- Drop and re-create the database schema on startup -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!-- Echo all executed SQL to stdout -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql"> false</property>

<!-- 
<property name="hibernate.connection.autocommit">false</property>
 -->
<!-- 文件映射 -->
        <mapping resource="hibernate/test/Product.hbm.xml"/>

    </session-factory></hibernate-configuration>

解决方案 »

  1.   

    有日志信息或者错误信息吗?贴上来看看?如果正常执行,应该是能打印出执行的SQL语句的。
      

  2.   

    就这个:
    $Proxy0
    Hibernate: insert into product (name) values (?)错误信息没有
    日志没弄
      

  3.   

    Hibernate: insert into product (name) values (?)
    DEBUG (AbstractBatcher.java:484) - preparing statement
    DEBUG (AbstractEntityPersister.java:1997) - Dehydrating entity: [hibernate.test.Product#<null>]
    DEBUG (NullableType.java:133) - binding 'Test:Wed Nov 26 00:47:50 CST 2008' to parameter: 1
    DEBUG (IdentifierGeneratorFactory.java:72) - Natively generated identity: 38
    DEBUG (AbstractBatcher.java:374) - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
    DEBUG (AbstractBatcher.java:533) - closing statement
    DEBUG (TransactionAspectSupport.java:319) - Completing transaction for [hibernate.test.ProductService.saveProduct]
    DEBUG (AbstractPlatformTransactionManager.java:880) - Triggering beforeCommit synchronization
    DEBUG (AbstractPlatformTransactionManager.java:893) - Triggering beforeCompletion synchronization
    DEBUG (AbstractPlatformTransactionManager.java:707) - Initiating transaction commit
    DEBUG (HibernateTransactionManager.java:602) - Committing Hibernate transaction on Session [org.hibernate.impl.SessionImpl@5e222e]
    DEBUG (JDBCTransaction.java:103) - commit
    DEBUG (SessionImpl.java:337) - automatically flushing session
    DEBUG (JDBCContext.java:205) - before transaction completion
    DEBUG (SessionImpl.java:393) - before transaction completion
    DEBUG (JDBCTransaction.java:116) - committed JDBC Connection
    DEBUG (JDBCContext.java:219) - after transaction completion
    DEBUG (ConnectionManager.java:302) - transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources!
    DEBUG (SessionImpl.java:422) - after transaction completion
    DEBUG (AbstractPlatformTransactionManager.java:906) - Triggering afterCommit synchronization
    DEBUG (AbstractPlatformTransactionManager.java:922) - Triggering afterCompletion synchronization
    DEBUG (TransactionSynchronizationManager.java:282) - Clearing transaction synchronization
    DEBUG (TransactionSynchronizationManager.java:199) - Removed value [org.springframework.orm.hibernate3.SessionHolder@4ed904] for key [org.hibernate.impl.SessionFactoryImpl@3fbbfc] from thread [main]
    DEBUG (HibernateTransactionManager.java:681) - Closing Hibernate Session [org.hibernate.impl.SessionImpl@5e222e] after transaction
    DEBUG (SessionFactoryUtils.java:774) - Closing Hibernate Session
    DEBUG (SessionImpl.java:273) - closing session
    DEBUG (ConnectionManager.java:380) - performing cleanup
    DEBUG (ConnectionManager.java:441) - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
    DEBUG (DriverManagerConnectionProvider.java:129) - returning connection to pool, pool size: 1
    DEBUG (JDBCContext.java:219) - after transaction completion
    DEBUG (ConnectionManager.java:302) - transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources!
    DEBUG (SessionImpl.java:422) - after transaction completion
      

  4.   

    你的DAO是绝对有问题的!让你的DAO继承HibernateDaoSupport这个类,DAOl类中也不用SessionFactory这个成员变量了,当然更不用相应的set方法了,然后在程序中这样写:getHibernateTemplate().saveOrUpdate(product),因为Spring的事物管理器对Session都是采用ThrealLocal来进行工作的,你那样直接SessionFactory.openSession()是不行的。。
      

  5.   

    先谢下6楼以及各位结贴先
    一直不明白的一点是:在spring+Hibernate事务配置中,DAO是如何实现的,是使用sessionFactory直接注入一个sessionFactory,还是通过注入sessionFactory,然后new 一个 HibernateTemplate?