hibernate - 记录 JDBC/Hibernate/JPA 事务隔离级别

标签 hibernate jpa jdbc transactions 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>

但是,我不相信它实际上在使用 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 [名称]、snapshot_isolation_state_desc、snapshot_isolation_state、is_read_committed_snapshot_on
从 sys.databases
WHERE [名称] = 'database_name';

现在 READ_COMMITTED 将被解释为 SQL Server 中的 READ_COMMITTED_SNAPSHOT。

关于hibernate - 记录 JDBC/Hibernate/JPA 事务隔离级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3303104/

相关文章:

Java:JPA 类,从 Date 重构为 DateTime

java - 如何处理以下查询

hibernate - 更改枚举的默认 hibernate 映射策略

java - 来自 Hibernate 的 Spring MVC View 的数据

java - hibernate 5 - java.lang.NoSuchMethodError : javax. persistence.Table.indexes()

java - 在条款中使用 createNativeQuery

java - 批量处理10条记录java,JPA

java - 使用 JDBC 读取数据库

java - 如何阻止 Java 应用程序在数据库中插入相同的值 - SQL Server

java - 无法在控制台输出中打印 SQL 语句