|
|
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, зачем задавать транзакцию для режима чтения из базы - типа Код: java 1. 2. 3. 4. И еще вопрос - что происходит, если мы задаем для метода Код: java 1. 2. 3. 4. Во втором случае транзакция вообще не запускается - из-за propagation=Propagation.NEVER. То есть таким образом ее просто отключили для этого конкретного метода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2012, 22:59:22 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
oson, намудрили они конечно с таким количеством флагов: Ошибки, связанные с флагом "только чтение" аннотации @Transactional http://www.ibm.com/developerworks/ru/library/j-ts1/index.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2012, 08:30:39 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Во втором случае транзакция вообще не запускается Любой запрос всегда исполняется в рамках некоторой транзакции. У JDBC Connection может быть включен autocommit, в этом случае драйвер будет сам автоматически посылать серверу команду commit после каждого запроса. Автокоммит вредная вещь, потому что угрожает целостности данных. Если какая-то аннотация приводит к тому, что запросы исполняются в режиме автокоммита, то это вредная аннотация и ее использовать не следует. В каких-то древних СУБД короткие транзакции были лучше для производительности, но сейчас это не актуально. Подскажите пожалуйста, зачем задавать транзакцию для режима чтения из базы - типа Для обеспечения transaction level read consistency. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 00:49:07 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
В статье на ibm.com написана какая-то фигня. Либо автор не грамотен, либо перевод плохой, либо автор работает с какой-то экзотической СУБД. Зачем надо начинать транзакцию, если речь идет только о чтении данных? Разумеется, этого делать не нужно. Для statement level read consistency. Автор считает, что есть два режима - использовать транзакции и не использовать. И при использовании транзакции расходуются какие-то дорогостоящие ресурсы. Это не так. Транзакция неизбежно начинается при выполнении первого запроса, и заканчивается при commit/rollback. Если вас не заботит качество ваших данных, то нет причин думать на тему применения транзакций, поскольку на платформе Java они могут серьезно снизить производительность Это абсолютно неверное утверждение. Автокоммит наоборот увеличивает число транзакций и снижает производительность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 01:19:02 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
авторДля statement level read consistency Для transaction level read consistency, я имел в виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 01:19:43 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪ, Мы же не говорим про jdbc. Он применяется для простейших проектов. Там автокоммит Оправдан. Сабж про Управление транзакциями, когда он выключен по дефолту. Иначе работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2012, 10:08:19 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
прочитал в Spring 3 PRO, что @Transactional(readOnly=true) позволяет // Other code omitted @Transactional(readOnly=true) public List<Contact> findAll() { return sessionFactory.getCurrentSession(). createQuery("from Contact c").list(); } } ... The @Transactional(readOnly=true), which means we want the transaction to be set as read-only. Setting that attribute for finder methods will result in better performance. Но транзакция значит в любом случае открывается и коммитится, даже для чтения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2012, 23:04:10 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Но транзакция значит в любом случае открывается и коммитится, даже для чтения? См http://kickjava.com/src/org/springframework/jdbc/datasource/DataSourceTransactionManager.java.htm, методы doBegin и doCommit. Кстати, тут Blazkowich писал, что классы в спринге простые и понятные. Вот отличный пример: Data access code that should remain unaware of Spring's data access support can work with this proxy to seamlessly participate in Spring-managed transactions. Note that the transaction manager, for example DataSourceTransactionManager, still needs to work with the underlying DataSource, not with this proxy. Make sure that TransactionAwareDataSourceProxy is the outermost DataSource of a chain of DataSource proxies/adapters. TransactionAwareDataSourceProxy can delegate either directly to the target connection pool or to some intermediary proxy/adapter like LazyConnectionDataSourceProxy or UserCredentialsDataSourceAdapter. При этом все нужное API состоит из 3 функций: Datasource.getConnection, Connection.commit и Connection.rollback. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 01:10:18 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪСм http://kickjava.com/src/org/springframework/jdbc/datasource/DataSourceTransactionManager.java.htm, методы doBegin и doCommit.открой для себя grepcode ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 13:39:28 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
osonНо транзакция значит в любом случае открывается и коммитится, даже для чтения? чувак, скажи какую часть этой фразы ты не понял Йуный джавистЪЛюбой запрос всегда исполняется в рамках некоторой транзакции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 13:41:21 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
chpasha, не ругайся)) Сервер открывает свою серверную транзакцию (для чтения) Сам. Для этого обрамлять SELECT на клиенте в Java begin tran необязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 13:56:11 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Petro123не ругайся)) Сервер открывает свою серверную транзакцию (для чтения) Сам. Вообще говоря не всегда. Версионникам транзакции для чтения не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 14:53:44 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевPetro123не ругайся)) Сервер открывает свою серверную транзакцию (для чтения) Сам. Вообще говоря не всегда. Версионникам транзакции для чтения не нужны. ну дак я и добавил к твоей фразе строку для форума Java - "с клиента стартовать её не надо". И называется она - клиентская. Их много разных видов и спор ни о чём. ЗЫ Для сиквела SELECT тоже не надо обрамлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 15:24:27 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Petro123, С другой стороны у тогоже Oracle read-only транзакция это совсем не то же самое, что и обычный select. И ее надо объявлять явно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 22:27:10 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевPetro123, С другой стороны у тогоже Oracle read-only транзакция это совсем не то же самое, что и обычный select. И ее надо объявлять явно. Сергей! Тут с транзакциями замешанными на все виды СУБД столько сторон и ньюансов, что их флажками и аннотациями не решить. О том, что всё неоднозначно и не так просто для понимания, я и сказал во втором посте. На уровне прикладного Java кода нет слов Оракл. Все СУБД под одну аннотацию не завести. И конечно, лучше делать транзакции короткими, а читающую транзакцию делать на уровне оператора. А не длинной транзакции с несколькими SELECT. http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10759/statements_10005.htm imho Т.е. идём сначала от простейших случаев на все СУБД, а потом уже "перчим" всё фичами и прибамбасами-хинтами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2012, 23:23:09 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Вообще говоря не всегда.Всегда.Версионникам транзакции для чтения не нужны.Нужны. Именно транзакции определяют какую версию записи возвращать клиенту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 06:41:03 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovСергей Арсеньев Вообще говоря не всегда.Всегда.Версионникам транзакции для чтения не нужны.Нужны. Именно транзакции определяют какую версию записи возвращать клиенту. В общем клиентская транзакция должна открываться - коммититься и для чтения данных тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 00:34:03 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
osonВ общем клиентская транзакция должна открываться - коммититься и для чтения данных тоже.И? Как это влияет на механизм работы версионника? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 00:41:43 |
|
||
|
Транзакция для чтения
|
|||
|---|---|---|---|
|
#18+
Да я ж про версионник не спрашивал. Меня изначальный вопрос интересует :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2012, 01:02:24 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=261&tid=2130648]: |
0ms |
get settings: |
15ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 321ms |
| total: | 477ms |

| 0 / 0 |
