分析一段以前的配置(精读)

来源:互联网 发布:淘宝售后服务在哪 编辑:程序博客网 时间:2024/05/14 17:31

<bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource"
  destroy-method="close">
  <property name="driverClassName"
   value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
  <property name="url"
   value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ITSM_JBPM;SelectMethod=cursor;" />
  <property name="username" value="sa" />
  <property name="password" value="sa" />
 </bean>

 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
  singleton="true">

<!-------

 问题一:property属性的名字能不能取成其他的名字?

mappingResources,  hibernateProperties,  dataSource

答案是: 不能随便取。

理由是:

package org.springframework.orm.hibernate3;

public class LocalSessionFactoryBean extends AbstractSessionFactoryBean {

 private Resource[] mappingLocations;

 private Properties hibernateProperties;

 private DataSource dataSource;

 public void setMappingResources(String[] mappingResources) {
  this.mappingLocations = new Resource[mappingResources.length];
  for (int i = 0; i < mappingResources.length; i++) {
   this.mappingLocations[i] = new ClassPathResource(mappingResources[i].trim());
  }
 }

 public void setHibernateProperties(Properties hibernateProperties) {
  this.hibernateProperties = hibernateProperties;
 }

 public void setDataSource(DataSource dataSource) {
  this.dataSource = dataSource;
 }

}

---->

  <property name="mappingResources">
   <list>
      <value>
          com/vandagroup/itsm/dataobject/attachment/ItsmAttachment.hbm.xml
      </value>

    <!-- ###################### -->
    <!-- # jbpm mapping files  以下是配置的一些工作流相关的信息# -->
    <!-- ###################### -->

    <!-- hql queries and type defs -->
    <value>org/jbpm/db/hibernate.queries.hbm.xml</value>

    <!-- graph.def mapping files -->
         <value>
                org/jbpm/graph/def/ProcessDefinition.hbm.xml
        </value>
       </list>

    <!-- # jbpm mapping files  这里不是我的重点。省略不提# -->
  </property>

  <property name="hibernateProperties">
   <props>
       <prop key="hibernate.dialect">
              org.hibernate.dialect.SQLServerDialect
       </prop>

<!-- # jbpm mapping files  这里是我的重点# -->

<!--

Hibernate SQL方言 (hibernate.dialect)

如果出现如下错误,则可能是Hibernate SQL方言 (hibernate.dialect)设置不正确。
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]'last_insert_id' 不是可以识别的 函数名。

RDBMS 方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect PostgreSQL org.hibernate.dialect.PostgreSQLDialect MySQL org.hibernate.dialect.MySQLDialect MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect Oracle (any version) org.hibernate.dialect.OracleDialect Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect Sybase org.hibernate.dialect.SybaseDialect Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect Microsoft SQL Server org.hibernate.dialect.SQLServerDialect SAP DB org.hibernate.dialect.SAPDBDialect Informix org.hibernate.dialect.InformixDialect HypersonicSQL org.hibernate.dialect.HSQLDialect Ingres org.hibernate.dialect.IngresDialect Progress org.hibernate.dialect.ProgressDialect Mckoi SQL org.hibernate.dialect.MckoiDialect Interbase org.hibernate.dialect.InterbaseDialect Pointbase org.hibernate.dialect.PointbaseDialect FrontBase org.hibernate.dialect.FrontbaseDialect Firebird org.hibernate.dialect.FirebirdDialect

-->

    <prop key="hibernate.show_sql">true</prop>

<!------

hibernate.show_sql 如果为true,表示在程序运行时,会在控制台输出SQL语句,这有利于跟踪Hibernate的运行状态,默认为false。在应用开发和测试阶段,可以把这个属性设为true,以便跟踪和调试应用程序,在应用发布阶段,应该把这个属性设为false,以便减少应用的输出信息,提高运行性能 

----->

    <prop key="hibernate.generate_statistics">true</prop>

<!------

hibernate.generate_statistics 如果开启, Hibernate将收集有助于性能调节的统计数据. 取值 true | false

--->
    <prop key="hibernate.cache.use_second_level_cache">
     false
    </prop>

<------

hibernate.cache.use_second_level_cache 能用来完全禁止使用二级缓存. 对那些在类的映射定义中指定<cache>的类,会默认开启二级缓存. 取值 true|false

--->
    <prop key="hibernate.cache.use_query_cache">false</prop>
   </props>

<!------

hibernate.cache.use_query_cache 允许查询缓存, 个别查询仍然需要被设置为可缓存的. 取值 true|false

---->
  </property>
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
 </bean>

 <!-- transaction -->
 <bean id="TransactionProxyFactoryBean"
  class="org.springframework.aop.framework.ProxyFactoryBean">
  <property name="proxyTargetClass">
   <value>true</value>
  </property>
  <property name="singleton">
   <value>false</value>
  </property>
  <property name="interceptorNames">
   <list>
    <value>transactionInterceptor</value>
   </list>
  </property>
 </bean>

 


 <bean id="transactionInterceptor"
  class="org.springframework.transaction.interceptor.TransactionInterceptor">
  <property name="transactionAttributes">
   <props>
    <prop key="find*">
     PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly
    </prop>
    <prop key="*">
     PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Exception
    </prop>
   </props>
  </property>
  <property name="transactionManager">
   <ref bean="hibernateTransactionManager" />
  </property>
 </bean>


 <bean id="hibernateTransactionManager"
  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory">
   <ref bean="sessionFactory" />
  </property>

<!----

package org.springframework.orm.hibernate3

public class HibernateTransactionManager extends AbstractPlatformTransactionManager
  implements ResourceTransactionManager, BeanFactoryAware, InitializingBean {

 private SessionFactory sessionFactory;

 /**
  * Set the SessionFactory that this instance should manage transactions for.
  */
 public void setSessionFactory(SessionFactory sessionFactory) {
  this.sessionFactory = sessionFactory;
 }

}

-->
 </bean>

原创粉丝点击