zpi*_*ter 4 hibernate jpa transactions jdbc isolation-level
我正在开发一个连接到Microsoft SQL Server数据库的Flex/BlazeDS/Spring/JPA/Hibernate Web应用程序.它似乎是过于激进地锁定表格.从我的研究来看,看起来使用快照隔离策略是最好的选择.
我已经这样设定了:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" lazy-init="true">
<property name="persistenceUnitName" value="OrderManagerPersistenceUnit" />
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.jdbc.batch_size">${db.main.hibernate.jdbc.batch_size}</prop>
<prop key="hibernate.hbm2ddl.auto">${db.main.hbm2ddl.auto}</prop>
<prop key="hibernate.search.default.indexBase">${db.main.search.default.indexBase}</prop>
<prop key="hibernate.search.autoregister_listeners">${db.main.search.autoregister_listeners}</prop>
<prop key="hibernate.show_sql">${db.main.show_sql}</prop>
<prop key="hibernate.dialect">${db.main.dialect}</prop>
<prop key="hibernate.connection.isolation">${db.main.isolation}</prop>
<prop key="hibernate.ejb.naming_strategy">com.herffjones.zebra.db.ZebraNamingStrategy</prop>
</props>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
但是,我不相信它实际上是在使用hibernate.connection.isolation.看起来我必须在JDBC数据源上设置一些属性.
我想验证它当前是否使用4096作为查询的事务隔离级别.
我可以将哪些包和日志级别添加到我的logback.xml文件中,以清楚地查看特定查询正在使用的隔离级别?
谢谢!
您应该将hibernate的事务隔离级别设置为2(READ_COMMITTED的java.sql.Connection常量.
然后在SQL Server 2005实例中执行以下操作(没有活动连接):
ALTER DATABASE [database_name] SET ALLOW_SNAPSHOT_ISOLATION ON; ALTER DATABASE [database_name] SET READ_COMMITTED_SNAPSHOT ON;
通过执行此查询进行测试:
SELECT [name],snapshot_isolation_state_desc,snapshot_isolation_state,is_read_committed_snapshot_on FROM sys.databases WHERE [name] ='database_name';
现在,READ_COMMITTED将在SQL Server中解释为READ_COMMITTED_SNAPSHOT.
| 归档时间: |
|
| 查看次数: |
7041 次 |
| 最近记录: |