微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

分析一段以前的配置精读

<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,-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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐