How to set the Transaction isolationlevel using Spring with MyBatis -


i set isolationlevel self, using transactionmanager spring framework combined mybatis. trying lot of tutorial, nothing worked.

my application build mvc pattern, means have views, models, interfaces used dependency-injection mybatis , controller class.

i hope can give me advice new in mybatis , spring. whole application running take on controll on isolationlevels.

this spring-configuration.xml file         <!--<mybatis-spring:scan base-package="de.hrw.model.**"/> -->     <mybatis-spring:scan base-package="de.hrw.*" />     <context:component-scan base-package="de.hrw.*" />         <bean id="datasource" class="com.zaxxer.hikari.hikaridatasource">         <property name="jdbcurl" value="jdbc:mysql://127.0.0.1:3306/carrental">         </property>         <property name="username" value="root"></property>         <property name="password" value="root"></property>         <property name="driverclassname" value="com.mysql.jdbc.driver"></property>         <property name="autocommit" value="false"></property>         <property name="registermbeans" value="true"></property>         <property name="transactionisolation"             value="transaction_serializable">         </property>      </bean>       <bean id="sqlsessionfactorybean"         class="org.mybatis.spring.sqlsessionfactorybean">         <property name="datasource" ref="datasource"></property>          <property name="configlocation" value="classpath:mybatis-config.xml">         </property>          </bean>      <bean id="carcontroller" class="de.hrw.controller.carcontroller">         <property name="transactionmanager" ref="transactionmanager" />      </bean>      <bean id="carsearchview" class="de.hrw.view.carsearchview">     </bean>       <bean id="transactionmanager"         class="org.springframework.jdbc.datasource.datasourcetransactionmanager">         <property name="datasource" ref="datasource" />     </bean>      <tx:annotation-driven transaction-manager="transactionmanager"/> 

i using dependecy-injection of mybatis data , database

example of iterface package de.hrw.mgmtdao;

import java.util.list;

import de.hrw.model.carmodel;   public interface icarmgmt {     public carmodel selectcarbyid(final int carid);          public list<carmodel> selectallcars();  } 

this main-class include view (frame)

public class carrental_main {      public static void main(string[] args) {         // todo auto-generated method stub            applicationcontext context =                    new classpathxmlapplicationcontext("spring-config.xml");            carcontroller carcontroller = (carcontroller) context.getbean("carcontroller");            carcontroller.opensearchview();           carcontroller.getcarsearchview().setvisible(true);     }         } 

this controller. here try set isolation level serializable set default (-1)

@transactional(propagation=propagation.requires_new , isolation = isolation.serializable) public class carcontroller {     @autowired     private icarmgmt carmgmt;  private carsearchview carsearchview;  private applicationcontext applicationcontext; @autowired private platformtransactionmanager transactionmanager;  private transactionstatus transactionstatus;  private transactiondefinition defaulttransactiondefinition;  private datasource datasource;   public void opensearchview() {     this.setapplicationcontext();     this.setdefaulttransactiondefinition();     this.settransactionstatus();      this.carsearchview = (carsearchview) applicationcontext             .getbean("carsearchview");       try {          list<carmodel> carlist = carmgmt.selectallcars();           // this.carsearchview.setresultlist(carlist);         this.carsearchview.setlabellist(carlist);           this.carsearchview.createtextfieldlist();         this.carsearchview.createlabelfieldlist();           transactionmanager.commit(transactionstatus);      } catch (dataaccessexception e) {         system.out.println("error in creating record, rolling back");         transactionmanager.rollback(transactionstatus);         throw e;     } }   public void setdatasource(datasource datasource) {           this.datasource = datasource;         }  public void setdefaulttransactiondefinition() {     this.defaulttransactiondefinition = new defaulttransactiondefinition(); }  public void setapplicationcontext() {     applicationcontext = new classpathxmlapplicationcontext(             "spring-config.xml"); }  public void settransactionmanager(         platformtransactionmanager transactionmanager) {     this.transactionmanager = transactionmanager; }  public void settransactionstatus() {     this.transactionstatus = transactionmanager.gettransaction(defaulttransactiondefinition);  } 

you can apply transaction shown below in mapper interface(though recommended apply transaction annotation class, in mybatis, transaction defined in interface applied proxy class)

import java.util.list; import de.hrw.model.carmodel;  @transactional public interface icarmgmt {      @transactional(isolation = isolation.serializable)     public carmodel selectcarbyid(final int carid);      public list<carmodel> selectallcars();  } 

Comments

Popular posts from this blog

node.js - Using Node without global install -

How to access a php class file from PHPFox framework into javascript code written in simple HTML file? -

java - Null response to php query in android, even though php works properly -