Struts Tutorials:
Struts2 Tag CheckBoxList , Checkbox, Iterator, IF
Struts2 Tag Library Example
Struts2 Tiles Example
Struts2 Tiles I18N Example
Struts2 Questions
Struts Tiles I18N Example
Struts Eclipse MVC
Struts2 Tags
Struts2 Example and Tutorial
Struts MVC
Struts2 Validation
Hibernate Tutorials:
Hibernate Case Study
Class Hierarchy Persist Example
Using Hibernate Interceptor
Hibernate Questions with Answer
Hibernate Many-to-Many Mapping Example
Hibernate one-to-many Mapping Example
Hibernate and ORM tools
Spring Hibernate Example
Hibernate SessionFactory Example
Hibernate Mapping Class Hierarchy
Hibernate Questions
Hibernate SessionFactory Questions
Spring Hibernate Example:
Spring Hibernate Case Study
Written By : Amit
Title :
Java IO Basics
Description :
Understanding Input Output Streams More...
|
Written By : Sameer
Title :
Java Comparator and compareTo
Description :
Question More...
|
Written By : Sameer
Title :
Apache ServiceMix
Description :
SOA and ESB More...
|
Written By : kkk_f17
Title :
Question on String in Java
Description :
How to improve performance More...
|
Written By : guddu
Title :
Tomcat and LDAP
Description :
Integration for Enterprise SSO More...
|
Written By : Amit
Title :
SSO
Description :
Single Sign On More...
|
Written By : Amit
Title :
Swing or AWT
Description :
Why to choose either More...
|
Written By : Girish
Title :
ACL Tag Library
Description :
Using Java in Web Application More...
|
| Transaction-Isolation-Levels - JDBC-Transaction - Your-Questions-on-Java Example Author : ISHTEK Date (Year/Month/Date): 2009-05-28
Question on JDBC Transaction Isolation Levels :
| |
What are the JDBC Transaction isolation levels while using Database and
explain different types of reads resulting from these isolation levels?
To my understanding, Transaction comes into picture when there is a need
to allow many clients to access system concurrently, without really
bothering about data integrity and consistency, all or nothing behavior
and durable against server crash, power failure, or something that is
beyond controller or developer, system architect and or any stakeholder
to this system.
One question comes to my mind, if Transaction manages all these properties
as mentioned above, then what are isolation levels and what for these are
needed.
In case of multiple transactions running in server container or within
server transaction context/boundary, special care is to be taken on
database side as Database is a shared resource, across multiple
transactions.
So Isolation level is related to how transactions are isolated from data
store/database.
Before starting to discuss isolation levels, let us discuss possible facts
about a system where different threads working on same or different table
and rows within table.
Suppose we are dealing with two threads, T1 and T2 and both are trying to
work on a single row of a database table.
If T1, reads this row, and T2 either changes the same row, adds some more
rows, something similar to what T1 has already read or deleted the same row.
Then in this case how T1 will know what has happened to the data that it has
already fetched and probably would be working on.
Many possible cases will be as follows:
1. T1 reads a row, T2 changes the same row, now if T1 reads the same
row of table, it won't find the same data again. So is a kind of
no same data or no repeatable data.
2. T1 reads the data, that T2 has inserted into table but not yet committed.
Now T1 is working on this data, but somehow, data inserted by T2 got
roll backed. This way T1 is working on the data that now doesn't
existed in data store, isn't it dirty data avaliable with T1?
3. T1 reads some numbers of rows by some where clause in SQL statement,
but in the mean time T2 inserted some more records, and the condition
comes out to be same as that of T1 used to read initially.
If again T1 reads data with same where clause, and found many more rows,
those are something like phantom data to T1. So it can be phantom read.
So we have three types of reads discussed here as follows:
Dirty read
Non-repeatable read
Phantom read
Four types of isolation levels as follows:
TRANSACTION_READ_COMMITTED
In this case, all transactions read committed data only, so by using this
isolation level, dirty read can be stopped from occuring. As it cannot stop
other transactions from changing to adding rows, so non repeatable and
phantom reads can occur.
TRANSACTION_READ_UNCOMMITTED
As it is not committed, so all three types of reads can occur.
TRANSACTION_REPEATABLE_READ
In this isolation level, dirty and non repeatable reads cannot occur,
but phantom read can occur.
TRANSACTION_SERIALIZABLE
Transaction serializable type of Isoclation Level can stop all three types
of reads from occurring, but at the expense of performance, as at a time
only on transaction can have access to a table as one point of time.
This makes all other transactions to wait, so this is not good performance
oriented option. |
|