|
|
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Atum1наверное мы по разному видим и понимаем CQRS :) возможно. Но: - оракл не делит транзакции на читающие и пишущие. Зачем мне тогда это? - не понял про необходимость устройства доп.БД _читающей_. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 15:45 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Atum1, только вот забыли основной "кусище" добавить (и здесь колонок не много еще): автор<sql-result-set-mapping name="BookAuthorMappingXml"> <entity-result entity-class="org.thoughts.on.java.jpa.model.Author"> <field-result name="id" column="authorId"/> <field-result name="firstName" column="firstName"/> <field-result name="lastName" column="lastName"/> <field-result name="version" column="authorVersion"/> </entity-result> <entity-result entity-class="org.thoughts.on.java.jpa.model.Book"> <field-result name="id" column="id"/> <field-result name="title" column="title"/> <field-result name="author" column="author_id"/> <field-result name="version" column="version"/> </entity-result> </sql-result-set-mapping> А что там за dirtychecking если вытаскивать для чтения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 16:44 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
no56892А что там за dirtychecking если вытаскивать для чтения? Если вытаскивать в read-only, то dirty checking, как раз не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 17:10 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Petro123Atum1наверное мы по разному видим и понимаем CQRS :) возможно. Но: - оракл не делит транзакции на читающие и пишущие. Зачем мне тогда это? - не понял про необходимость устройства доп.БД _читающей_. IMHO Папа все понял... ну это уж совсем классическое описание паттерна.... я же говорил про его идею и маленькую часть.... А так да Там же и cap теорема всплывает и пр.пр... Нужно Писать классы запросы на dsl языке и исполнять их .... как у с# есть linq язык..... Прада на java реализации счас очень стремная) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 19:12 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Blazkowiczno56892А что там за dirtychecking если вытаскивать для чтения? Если вытаскивать в read-only, то dirty checking, как раз не будет. Если вытаскивать dto то не будет.... для ридонли там еще нужно посмотреть .... не так все просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 19:13 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
no56892Atum1, только вот забыли основной "кусище" добавить (и здесь колонок не много еще): автор<sql-result-set-mapping name="BookAuthorMappingXml"> <entity-result entity-class="org.thoughts.on.java.jpa.model.Author"> <field-result name="id" column="authorId"/> <field-result name="firstName" column="firstName"/> <field-result name="lastName" column="lastName"/> <field-result name="version" column="authorVersion"/> </entity-result> <entity-result entity-class="org.thoughts.on.java.jpa.model.Book"> <field-result name="id" column="id"/> <field-result name="title" column="title"/> <field-result name="author" column="author_id"/> <field-result name="version" column="version"/> </entity-result> </sql-result-set-mapping> А что там за dirtychecking если вытаскивать для чтения? Так все это можно и через dto класс описать там же есть пример . Вы теперь свое чудо решение покажите !? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 19:31 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Если вытаскивать dto то не будет.... для ридонли там еще нужно посмотреть .... не так все просто. В том плане что недостаточно указать просто транзакцию как ридонли .... нужно обязательно указать флаг ридонли в true. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 19:33 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Atum1Если вытаскивать dto то не будет.... для ридонли там еще нужно посмотреть .... не так все просто. В том плане что недостаточно указать просто транзакцию как ридонли .... нужно обязательно указать флаг ридонли в true. А Либо через StatelessSession тянуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 19:36 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Может я конечно туплю, но "dirty checking" - что Вы под этими словами подразумеваете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 19:36 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Atum1, Или добавить @Immutable над классом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 19:38 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, То что сам производитель и создатель хибернейта... плюс это куча абстракций...куча оберток... куча проксей и конечно же кеш... что очень улучшает вашу жизнь и делает оцбой ваш запрос на порядок а то и два медленнее) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 19:48 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Вот наверное самое простое описание для другого фреймворка ,но и для хибера подходит Dirty checking По этому принципу работает AngularJS. Dirty checking — это проверка на изменененность данных, простая как два рубля. Раньше переменная myVar была 1, теперь она 2 — значит данные изменились и надо их в шаблоне перерисовать. Для простых переменных это оператор !=, для сложных — соответствующие легковесные процедуры. Это простейший подход, который избавляет нас как от необходимости работать с данными через специальный «слушающий» слой, так и от всех проблем, связанных с зависимостями данных. Что в свою очередь ведёт нас к вопросу равенства двух объектов на уровне jvm и на уровне базы данных ..... я уже спрашивал по этому поводу автора как он пишет хешкод и иквалс и тостринг.... но ответа не было.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 19:52 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Atum1, Мда смешались в кучу люди кони, имххо у вас какая то каша в голове. Дирти чек это когда передаешь ентити весь граф на мердж, и оно там ищет какие объекты поменялись чтобы сгенить апдейт инсерт делает. Иквалс хэшкод по айдишнику.ту стринг нафиг не нужен. Выборка через джипикуэл. Да кстати я просил два вложенных списка)) видимо задачки для собеседования пошли во вред)) без обид ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 20:02 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Тут как вариант пример http://rsdn.ru/forum/java/4586631.all Тут описание тест и решение https://vladmihalcea.com/2014/08/29/how-to-customize-hibernate-dirty-checking-mechanism/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 20:08 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Atum1Тут как вариант пример http://rsdn.ru/forum/java/4586631.all Тут описание тест и решение https://vladmihalcea.com/2014/08/29/how-to-customize-hibernate-dirty-checking-mechanism/ Это как раз следствие open session in view. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 20:42 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Мне одному нижеприведенный код кажется немного странным? Раскручивать стек, что бы получить ф-цию откуда мы вызвались.... да еще дергать данный код в каждом сеттере..... Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 21:51 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
no56892, Я жду вашего решения с коллекциями ... ) И да вот пример для чека есть персона два поля имя и возраст.... инстанс Иванов 33. Вытащили поменяли возраст на 34 вопрос какой запрос на апдейт сгенерит хибер?) А если 20 полей в перосоне? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 22:04 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Ха... работал с Хибером в Oracle CC&B, там похоже был реализован "Bytecode instrumentation" dirty checking. А я честно говоря думал, что это стандартная фича Hibernate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 22:06 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Во во....я уже тут тему поднимал...но не зашла.... все вокруг думают (или просто мне так кажется) что хибер это очень просто и не нужно знать sql и вообще ничего понимать не нужно ... Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Какие запросы и в какой последовательности будет генерить хибер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 22:37 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Atum1, Вы удивитесь но сгенерит именно то что вы будете писать руками, тоесть один апдейт. Я писал как у меня сделано. Зато Кроме копипастов из интернетов от вас ничего не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2016, 22:42 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
no56892Atum1, Вы удивитесь но сгенерит именно то что вы будете писать руками, тоесть один апдейт. Я писал как у меня сделано. Зато Кроме копипастов из интернетов от вас ничего не было. Вчера писал с телефона ...вот полный тест с данными : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. Не видите ничего странного ? например что нарушается порядок выполнения кода ? 1)что сначала у вас выполнился insert Report 2)потом update ( причем почему то указаны сразу два поля !!!! age=23, name='Elvis' ) 3) и в конце delete Account ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 09:12 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
Atum1, По поводу порядка запросов - а какая вам разница-то? Если в этой же транзакции используется помимо хибернейта еще clean jdbc/mybatis например, то перед их вызовом сделать flush/refresh. Про апдейт двух полей - ну не знаю честно говоря почему, но не критично (хотя интересно). А теперь представьте сколько времени вы руками будете это все писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 10:31 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
no56892Atum1, По поводу порядка запросов - а какая вам разница-то? Если в этой же транзакции используется помимо хибернейта еще clean jdbc/mybatis например, то перед их вызовом сделать flush/refresh. Про апдейт двух полей - ну не знаю честно говоря почему, но не критично (хотя интересно). А теперь представьте сколько времени вы руками будете это все писать. Ну как какая разница - она есть .... вы пишете один код - а он делает совсем другое .... 1)Про update - ставите @DynamicUpdate(true) - будет обновлять только одно поле ... но... но ..нужно понимать в каких случаях себе в ногу попадете :) Это решение , почему так - потому что Хибер думает что еще кто то где то мог ваш обхект или его поля изменять и перестраховывается и апдейтит все сразу , даже то что вы не меняли . Код: java 1. 2. 3. 4. 5. про хибер еще тут 2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 10:51 |
|
||
|
JPA много @OneToOne
|
|||
|---|---|---|---|
|
#18+
авторНу как какая разница - она есть .... вы пишете один код - а он делает совсем другое .... Потому что он через кэш сессии работает, а не напрямую с базой. Синхронизация с базой по коммиту, нужно раньше - flush/refresh. Единственно, что на данный момент напрягает это все-таки джойны OneToOne nullable и отсутствие on условия в join fetch...Зато не надо колбасить маппинги на резалтсет, даже в хваленом mybatis, два списка вложенных - полтора экрана маппингов. С ума сойдешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2016, 10:59 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39268305&tid=2122962]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 378ms |

| 0 / 0 |
