一,如何通过spring的配置文件自动生成表(不是通过hibernate.cfg.xml,这个配置文件我已经删了)
二,看下面一个在spring的配置
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="packagesToScan">
  <list>
    <value>com.jxszkj.entity</value>
  </list>
  </property>
  <property name="hibernateProperties">
    <props>
     <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
     <prop key="hibernate.show_sql">true</prop>
     <prop key="hbm2ddl.auto">create</prop>
    </props>
  </property>
</bean>
我该如何知道有哪些hibernateProperties可以配置?查哪个文档?
我查过spring的index和annotation文档,并未查到关于这个配置的详细信息(有事例,但事例只列举了hibernate.dialect,hibernate.show_sql这个两个配置)
恳请指教。

解决方案 »

  1.   

    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">${hibernate.dialect}</prop>
    <prop key="hibernate.show_sql">false</prop>
    <prop key="hibernae.user_outer_join">true</prop>
    <!-- prop key="hibernate.jdbc.batch_size">20</prop>
    <prop key="hibernate.cache.use_second_level_cache">false</prop -->
    <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
    <prop key="hibernate.connection.autocommit">false</prop>
    </props>
    </property>
      

  2.   

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd   
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd   
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd   
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!--  datasource  -->
    <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${database.driverClassName}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.username}" />
    <property name="password" value="${database.password}" />
    </bean> <bean id="sessionFactory"
    class="cn.com.gacinfo.gip.dao.ClasspathScanningAnnotationSessionFactoryBean">
    <property name="dataSource">
    <ref bean="dataSource" />
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.connection.provider_class">${hibernate.connection.provider_class}</prop>
    <prop key="hibernate.c3p0.min_size">${hibernate.c3p0.minPoolSize}</prop>
    <prop key="hibernate.c3p0.max_size">${hibernate.c3p0.maxPoolSize}</prop>
    <prop key="hibernate.c3p0.timeout">${hibernate.c3p0.timeout}</prop>
    <prop key="hibernate.c3p0.max_statements">${hibernate.c3p0.max_statements}</prop>
    </props>
    </property>
    <property name="configLocation" value="classpath:hibernate/hibernate.cfg.xml" />
    <property name="basePackages">
    <list>
    <value>cn.com.gacinfo.gip.domain</value>
    </list>
    </property>
    </bean> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> <!-- 事务管理 -->
    <tx:annotation-driven transaction-manager="transactionManager" />
    <!-- Hibernate TransactionManager -->
    <bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean></beans>
      

  3.   

    LZ,hibernateProperties配置信息当然是找官方文档了.!
    自动建表最好用update, update是第一次建,以后更新,  你create的话每次都会建关于Spring集成hibernate的配置, 应该找Spring的官方文档.!回答完毕
      

  4.   

    hibernateProperties指的就是Hibernate的配置属性,Hibernate的发布包中有相关文档:%hibernate-distribution-3.5.0-CR-2%/documentation/manual/en-US/hibernate_reference.pdf
    中第三章(3.4. Optional configuration properties)——(P38)这个文件中包含了一些数据库的配置
    %hibernate-distribution-3.5.0-CR-2%/project/etc/hibernate.properties
      

  5.   

    我都告诉你了  hibernateProperties配置在官方文档上有你就不会自己去下一个回来看.? 不至于懒得这么抽筋吧.?  告诉你哪里有你都不去找  非要别人把碗递给你手上你才肯吃饭吗.? 真是的.!   要学会动脑筋,不要一味指望别人,, 自己是最可靠的!
      

  6.   

    而且hibernate官方下回来的包里面 的etc文件夹里面就有hibernate.properties
    真是.!  贴给你自己看!######################
    ### Query Language ###
    ######################## define query language constants / function nameshibernate.query.substitutions yes 'Y', no 'N'
    ## select the classic query parser#hibernate.query.factory_class org.hibernate.hql.classic.ClassicQueryTranslatorFactory#################
    ### Platforms ###
    ################### JNDI Datasource#hibernate.connection.datasource jdbc/test
    #hibernate.connection.username db2
    #hibernate.connection.password db2
    ## HypersonicSQLhibernate.dialect org.hibernate.dialect.HSQLDialect
    hibernate.connection.driver_class org.hsqldb.jdbcDriver
    hibernate.connection.username sa
    hibernate.connection.password
    hibernate.connection.url jdbc:hsqldb:./build/db/hsqldb/hibernate
    #hibernate.connection.url jdbc:hsqldb:hsql://localhost
    #hibernate.connection.url jdbc:hsqldb:test## H2 (www.h2database.com)
    #hibernate.dialect org.hibernate.dialect.H2Dialect
    #hibernate.connection.driver_class org.h2.Driver
    #hibernate.connection.username sa
    #hibernate.connection.password
    #hibernate.connection.url jdbc:h2:mem:./build/db/h2/hibernate
    #hibernate.connection.url jdbc:h2:testdb/h2test
    #hibernate.connection.url jdbc:h2:mem:imdb1
    #hibernate.connection.url jdbc:h2:tcp://dbserv:8084/sample; 
    #hibernate.connection.url jdbc:h2:ssl://secureserv:8085/sample; 
    #hibernate.connection.url jdbc:h2:ssl://secureserv/testdb;cipher=AES## MySQL#hibernate.dialect org.hibernate.dialect.MySQLDialect
    #hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
    #hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
    #hibernate.connection.driver_class com.mysql.jdbc.Driver
    #hibernate.connection.url jdbc:mysql:///test
    #hibernate.connection.username gavin
    #hibernate.connection.password
    ## Oracle#hibernate.dialect org.hibernate.dialect.Oracle9iDialect
    #hibernate.dialect org.hibernate.dialect.Oracle10gDialect
    #hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
    #hibernate.connection.username ora
    #hibernate.connection.password ora
    #hibernate.connection.url jdbc:oracle:thin:@localhost:1521:orcl
    #hibernate.connection.url jdbc:oracle:thin:@localhost:1522:XE
    ## PostgreSQL#hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
    #hibernate.connection.driver_class org.postgresql.Driver
    #hibernate.connection.url jdbc:postgresql:template1
    #hibernate.connection.username pg
    #hibernate.connection.password
    ## DB2#hibernate.dialect org.hibernate.dialect.DB2Dialect
    #hibernate.connection.driver_class com.ibm.db2.jcc.DB2Driver
    #hibernate.connection.driver_class COM.ibm.db2.jdbc.app.DB2Driver
    #hibernate.connection.url jdbc:db2://localhost:50000/somename
    #hibernate.connection.url jdbc:db2:somename
    #hibernate.connection.username db2
    #hibernate.connection.password db2## TimesTen#hibernate.dialect org.hibernate.dialect.TimesTenDialect
    #hibernate.connection.driver_class com.timesten.jdbc.TimesTenDriver
    #hibernate.connection.url jdbc:timesten:direct:test
    #hibernate.connection.username
    #hibernate.connection.password ## DB2/400#hibernate.dialect org.hibernate.dialect.DB2400Dialect
    #hibernate.connection.username user
    #hibernate.connection.password password## Native driver
    #hibernate.connection.driver_class COM.ibm.db2.jdbc.app.DB2Driver
    #hibernate.connection.url jdbc:db2://systemname## Toolbox driver
    #hibernate.connection.driver_class com.ibm.as400.access.AS400JDBCDriver
    #hibernate.connection.url jdbc:as400://systemname
    ## Derby (not supported!)#hibernate.dialect org.hibernate.dialect.DerbyDialect
    #hibernate.connection.driver_class org.apache.derby.jdbc.EmbeddedDriver
    #hibernate.connection.username
    #hibernate.connection.password
    #hibernate.connection.url jdbc:derby:build/db/derby/hibernate;create=true
    ## Sybase#hibernate.dialect org.hibernate.dialect.SybaseDialect
    #hibernate.dialect org.hibernate.dialect.SybaseASE15Dialect
    #hibernate.connection.driver_class com.sybase.jdbc2.jdbc.SybDriver
    #hibernate.connection.username sa
    #hibernate.connection.password sasasa
    #hibernate.connection.url jdbc:sybase:Tds:co3061835-a:5000/tempdb
    ## Mckoi SQL#hibernate.dialect org.hibernate.dialect.MckoiDialect
    #hibernate.connection.driver_class com.mckoi.JDBCDriver
    #hibernate.connection.url jdbc:mckoi:///
    #hibernate.connection.url jdbc:mckoi:local://C:/mckoi1.0.3/db.conf
    #hibernate.connection.username admin
    #hibernate.connection.password nimda
    ## SAP DB#hibernate.dialect org.hibernate.dialect.SAPDBDialect
    #hibernate.connection.driver_class com.sap.dbtech.jdbc.DriverSapDB
    #hibernate.connection.url jdbc:sapdb://localhost/TST
    #hibernate.connection.username TEST
    #hibernate.connection.password TEST
    #hibernate.query.substitutions yes 'Y', no 'N'
    ## MS SQL Server#hibernate.dialect org.hibernate.dialect.SQLServerDialect
    #hibernate.connection.username sa
    #hibernate.connection.password sa## JSQL Driver
    #hibernate.connection.driver_class com.jnetdirect.jsql.JSQLDriver
    #hibernate.connection.url jdbc:JSQLConnect://1E1/test## JTURBO Driver
    #hibernate.connection.driver_class com.newatlanta.jturbo.driver.Driver
    #hibernate.connection.url jdbc:JTurbo://1E1:1433/test## WebLogic Driver
    #hibernate.connection.driver_class weblogic.jdbc.mssqlserver4.Driver
    #hibernate.connection.url jdbc:weblogic:mssqlserver4:1E1:1433## Microsoft Driver (not recommended!)
    #hibernate.connection.driver_class com.microsoft.jdbc.sqlserver.SQLServerDriver
    #hibernate.connection.url jdbc:microsoft:sqlserver://1E1;DatabaseName=test;SelectMethod=cursor
      

  7.   


    ## The New Microsoft Driver 
    #hibernate.connection.driver_class com.microsoft.sqlserver.jdbc.SQLServerDriver
    #hibernate.connection.url jdbc:sqlserver://localhost## jTDS (since version 0.9)
    #hibernate.connection.driver_class net.sourceforge.jtds.jdbc.Driver
    #hibernate.connection.url jdbc:jtds:sqlserver://1E1/test## Interbase#hibernate.dialect org.hibernate.dialect.InterbaseDialect
    #hibernate.connection.username sysdba
    #hibernate.connection.password masterkey## DO NOT specify hibernate.connection.sqlDialect## InterClient#hibernate.connection.driver_class interbase.interclient.Driver
    #hibernate.connection.url jdbc:interbase://localhost:3060/C:/firebird/test.gdb## Pure Java#hibernate.connection.driver_class org.firebirdsql.jdbc.FBDriver
    #hibernate.connection.url jdbc:firebirdsql:localhost/3050:/firebird/test.gdb
    ## Pointbase#hibernate.dialect org.hibernate.dialect.PointbaseDialect
    #hibernate.connection.driver_class com.pointbase.jdbc.jdbcUniversalDriver
    #hibernate.connection.url jdbc:pointbase:embedded:sample
    #hibernate.connection.username PBPUBLIC
    #hibernate.connection.password PBPUBLIC
    ## Ingres## older versions (before Ingress 2006)#hibernate.dialect org.hibernate.dialect.IngresDialect
    #hibernate.connection.driver_class ca.edbc.jdbc.EdbcDriver
    #hibernate.connection.url jdbc:edbc://localhost:II7/database
    #hibernate.connection.username user
    #hibernate.connection.password password## Ingres 2006 or later#hibernate.dialect org.hibernate.dialect.IngresDialect
    #hibernate.connection.driver_class com.ingres.jdbc.IngresDriver
    #hibernate.connection.url jdbc:ingres://localhost:II7/database;CURSOR=READONLY;auto=multi
    #hibernate.connection.username user
    #hibernate.connection.password password## Mimer SQL#hibernate.dialect org.hibernate.dialect.MimerSQLDialect
    #hibernate.connection.driver_class com.mimer.jdbc.Driver
    #hibernate.connection.url jdbc:mimer:multi1
    #hibernate.connection.username hibernate
    #hibernate.connection.password hibernate
    ## InterSystems Cache#hibernate.dialect org.hibernate.dialect.Cache71Dialect
    #hibernate.connection.driver_class com.intersys.jdbc.CacheDriver
    #hibernate.connection.username _SYSTEM
    #hibernate.connection.password SYS
    #hibernate.connection.url jdbc:Cache://127.0.0.1:1972/HIBERNATE
    #################################
    ### Hibernate Connection Pool ###
    #################################hibernate.connection.pool_size 1###########################
    ### C3P0 Connection Pool###
    ############################hibernate.c3p0.max_size 2
    #hibernate.c3p0.min_size 2
    #hibernate.c3p0.timeout 5000
    #hibernate.c3p0.max_statements 100
    #hibernate.c3p0.idle_test_period 3000
    #hibernate.c3p0.acquire_increment 2
    #hibernate.c3p0.validate false##############################
    ### Proxool Connection Pool###
    ################################ Properties for external configuration of Proxoolhibernate.proxool.pool_alias pool1## Only need one of the following#hibernate.proxool.existing_pool true
    #hibernate.proxool.xml proxool.xml
    #hibernate.proxool.properties proxool.properties#################################
    ### Plugin ConnectionProvider ###
    ################################### use a custom ConnectionProvider (if not set, Hibernate will choose a built-in ConnectionProvider using hueristics)#hibernate.connection.provider_class org.hibernate.connection.DriverManagerConnectionProvider
    #hibernate.connection.provider_class org.hibernate.connection.DatasourceConnectionProvider
    #hibernate.connection.provider_class org.hibernate.connection.C3P0ConnectionProvider
    #hibernate.connection.provider_class org.hibernate.connection.ProxoolConnectionProvider#######################
    ### Transaction API ###
    ######################### Enable automatic flush during the JTA beforeCompletion() callback
    ## (This setting is relevant with or without the Transaction API)#hibernate.transaction.flush_before_completion
    ## Enable automatic session close at the end of transaction
    ## (This setting is relevant with or without the Transaction API)#hibernate.transaction.auto_close_session
    ## the Transaction API abstracts application code from the underlying JTA or JDBC transactions#hibernate.transaction.factory_class org.hibernate.transaction.JTATransactionFactory
    #hibernate.transaction.factory_class org.hibernate.transaction.JDBCTransactionFactory
    ## to use JTATransactionFactory, Hibernate must be able to locate the UserTransaction in JNDI
    ## default is java:comp/UserTransaction
    ## you do NOT need this setting if you specify hibernate.transaction.manager_lookup_class#jta.UserTransaction jta/usertransaction
    #jta.UserTransaction javax.transaction.UserTransaction
    #jta.UserTransaction UserTransaction
    ## to use the second-level cache with JTA, Hibernate must be able to obtain the JTA TransactionManager#hibernate.transaction.manager_lookup_class org.hibernate.transaction.JBossTransactionManagerLookup
    #hibernate.transaction.manager_lookup_class org.hibernate.transaction.WeblogicTransactionManagerLookup
    #hibernate.transaction.manager_lookup_class org.hibernate.transaction.WebSphereTransactionManagerLookup
    #hibernate.transaction.manager_lookup_class org.hibernate.transaction.OrionTransactionManagerLookup
    #hibernate.transaction.manager_lookup_class org.hibernate.transaction.ResinTransactionManagerLookup##############################
    ### Miscellaneous Settings ###
    ################################ print all generated SQL to the console#hibernate.show_sql true
    ## format SQL in log and consolehibernate.format_sql true
    ## add comments to the generated SQL#hibernate.use_sql_comments true
    ## generate statistics#hibernate.generate_statistics true
    ## auto schema export#hibernate.hbm2ddl.auto create-drop
    #hibernate.hbm2ddl.auto create
    #hibernate.hbm2ddl.auto update
    #hibernate.hbm2ddl.auto validate
    ## specify a default schema and catalog for unqualified tablenames#hibernate.default_schema test
    #hibernate.default_catalog test
    ## enable ordering of SQL UPDATEs by primary key#hibernate.order_updates true
    ## set the maximum depth of the outer join fetch treehibernate.max_fetch_depth 1
    ## set the default batch size for batch fetching#hibernate.default_batch_fetch_size 8
    ## rollback generated identifier values of deleted entities to default values#hibernate.use_identifer_rollback true
    ## enable bytecode reflection optimizer (disabled by default)#hibernate.bytecode.use_reflection_optimizer true#####################
    ### JDBC Settings ###
    ####################### specify a JDBC isolation level#hibernate.connection.isolation 4
    ## enable JDBC autocommit (not recommended!)#hibernate.connection.autocommit true
    ## set the JDBC fetch size#hibernate.jdbc.fetch_size 25
    ## set the maximum JDBC 2 batch size (a nonzero value enables batching)#hibernate.jdbc.batch_size 5
    #hibernate.jdbc.batch_size 0
    ## enable batch updates even for versioned datahibernate.jdbc.batch_versioned_data true
    ## enable use of JDBC 2 scrollable ResultSets (specifying a Dialect will cause Hibernate to use a sensible default)#hibernate.jdbc.use_scrollable_resultset true
    ## use streams when writing binary types to / from JDBChibernate.jdbc.use_streams_for_binary true
    ## use JDBC 3 PreparedStatement.getGeneratedKeys() to get the identifier of an inserted row#hibernate.jdbc.use_get_generated_keys false
    ## choose a custom JDBC batcher# hibernate.jdbc.factory_class
    ## enable JDBC result set column alias caching 
    ## (minor performance enhancement for broken JDBC drivers)# hibernate.jdbc.wrap_result_sets
    ## choose a custom SQL exception converter#hibernate.jdbc.sql_exception_converter##########################
    ### Second-level Cache ###
    ############################ optimize chache for minimal "puts" instead of minimal "gets" (good for clustered cache)#hibernate.cache.use_minimal_puts true
    ## set a prefix for cache region nameshibernate.cache.region_prefix hibernate.test
    ## disable the second-level cache#hibernate.cache.use_second_level_cache false
    ## enable the query cache#hibernate.cache.use_query_cache true
    ## store the second-level cache entries in a more human-friendly format#hibernate.cache.use_structured_entries true
    ## choose a cache implementation#hibernate.cache.provider_class org.hibernate.cache.EhCacheProvider
    #hibernate.cache.provider_class org.hibernate.cache.EmptyCacheProvider
    hibernate.cache.provider_class org.hibernate.cache.HashtableCacheProvider
    #hibernate.cache.provider_class org.hibernate.cache.TreeCacheProvider
    #hibernate.cache.provider_class org.hibernate.cache.OSCacheProvider
    #hibernate.cache.provider_class org.hibernate.cache.SwarmCacheProvider
    ## choose a custom query cache implementation#hibernate.cache.query_cache_factory############
    ### JNDI ###
    ############## specify a JNDI name for the SessionFactory#hibernate.session_factory_name hibernate/session_factory
    ## Hibernate uses JNDI to bind a name to a SessionFactory and to look up the JTA UserTransaction;
    ## if hibernate.jndi.* are not specified, Hibernate will use the default InitialContext() which
    ## is the best approach in an application server#file system
    #hibernate.jndi.class com.sun.jndi.fscontext.RefFSContextFactory
    #hibernate.jndi.url file:/#WebSphere
    #hibernate.jndi.class com.ibm.websphere.naming.WsnInitialContextFactory
    #hibernate.jndi.url iiop://localhost:900/
      

  8.   

    首先严重鄙视5楼izard999
    楼主问了两个问题
    一,如何通过spring的配置文件自动生成表(不是通过hibernate.cfg.xml,这个配置文件我已经删了)
    你的回答:自动建表最好用update, update是第一次建,以后更新, 你create的话每次都会建
    就好比人家问你是男是女,你回答说:我不是畜生。
    这不是答非所问是什么?
    二,楼主已经说了,已经查过spring的index和annotation等相关文档,而苦于没找到相关信息。
    你的回答:LZ,hibernateProperties配置信息当然是找官方文档了.!
    这个文档提供的是关于jdbc连接的一些配置信息,而楼主要查的是hbm2ddl.auto等的具体使用方法。
    自己不懂,还在这装B,装B还不够,还恼羞成怒,摆出自己一副“专家,教授”的样子,对别人指指点点。
    送你一句话:莫装B,装B招雷P。
    好了,回答两个问题。

    如果不用hibernate的配置文件,无法实现根据实体类自动生产表。
    spring虽然有<prop key="hbm2ddl.auto">create</prop>这个配置,但这个配置并不能真正起到作用,当用spring配置的sessionFactroy做实体类的持久化的时候,系统会抛出异常:没有表可以 插入数据。

    有一个名为:Hibernate_3.2.0_符合Java习惯的关系数据库持久化_zh_CN.chm
    的文件,非常方便实用,LZ可以去下载。
      

  9.   

    Spring能自动生成表?  最终还不是要去找hibernate.properties相关的配置.?
    脑袋有点不清白吧?
      

  10.   

    The more you have spoken, the more ignorant you have expressed yourself, so shut up!
      

  11.   

    5楼的意思就是要楼主把
    <prop key="hibernate.hbm2ddl.auto">create</prop>
    改成
    <prop key="hibernate.hbm2ddl.auto">update</prop>
      

  12.   

    另外楼主好像写错了
    是<prop key="hibernate.hbm2ddl.auto">
      

  13.   

    哈哈,你看到了问题的本质所在。我把配置信息写正确后,测试证明只通过spring的配置文件是可以自动建表的。
      

  14.   

    我的也是这样写的<prop key="hibernate.hbm2ddl.auto">create</prop>,为啥还是不能自动建表呢?还需要别的配置吗?