Spring @Transactional распространение только для чтения

Во-первых, не волнуйтесь о недостающей информации об авторе/заголовке (и значок) в iTunes. Это - метаданные, которые прибывают, когда Вы распределяете использование App Store.

Ваш идентификатор пакета, как sascha говорит, должен быть уникальным и обычно является Вашим доменом назад. Это должно соответствовать идентификатору Приложения, который Вы создали на Портале Разработчика.

Отображаемое имя (CFBundleDisplayName) - то, как это появляется на главном экране. Одна важная вещь, которую я нашел об этом, состоит в том, что это может быть локализовано, поэтому если бы Ваше приложение назвали "Пивом" на английском языке, это могло бы отобразиться как "Birra" на итальянском языке и "Катафалк" на немецком языке.

механический материал, пока Вы следуете инструкциям, является на самом деле довольно прямым. Я нашел, что ключ готовится. Вы в основном не получаете уведомления, прежде чем Ваше Приложение пойдет живое, и процесс рассмотрения может взять любого где от нескольких часов до нескольких недель. Удостоверьтесь, что у Вас есть веб-сайт и выполнение и способность принять (и обеспечить) обратная связь. Я просто использовал Блоггера.

, Если Ваше приложение не тривиально, реальный мир будет находить проблемы, которые Вы не ожидали, и Ваши несчастные пользователи всегда будут самыми красноречивыми, таким образом, Вам будет нужна способность ответить!

Мое приложение Вкусно , между прочим.

57
задан DrewEaster 23 October 2009 в 15:14
поделиться

2 ответа

Прежде всего, поскольку Spring сам по себе не поддерживает постоянство, он не может указать, что именно должно означать readOnly . Этот атрибут является лишь подсказкой для поставщика, его поведение зависит, в данном случае, от Hibernate.

Если указать readOnly как true , режим очистки будет установлен как FlushMode.NEVER в текущем сеансе гибернации не позволяет сеансу зафиксировать транзакцию.

Кроме того, setReadOnly (true) будет вызываться в соединении JDBC, которое также является подсказкой для базовой базы данных. Если ваша база данных поддерживает это (скорее всего, поддерживает), это будет иметь тот же эффект, что и FlushMode.NEVER , но он сильнее, поскольку вы даже не можете выполнить сброс вручную.

Теперь давайте ' s посмотрите, как работает распространение транзакций.

Если вы явно не установите для readOnly значение true , у вас будут транзакции чтения / записи. В зависимости от атрибутов транзакции (например, REQUIRES_NEW ), иногда ваша транзакция приостанавливается в какой-то момент, запускается новая и в конечном итоге фиксируется, а после этого первая транзакция возобновляется.

Хорошо, мы ' re почти там. Давайте посмотрим, что привносит readOnly в этот сценарий.

Если метод в транзакции чтения / записи вызывает метод, требующий транзакции readOnly , первая один должен быть приостановлен, поскольку в противном случае в конце второго метода произойдет сброс / фиксация.

И наоборот,

73
ответ дан 24 November 2019 в 19:32
поделиться

По умолчанию распространение транзакции REQUIRED, что означает, что одна и та же транзакция будет распространяться от вызывающего абонента до вызываемого абонента. В этом случае также будет передаваться статус только для чтения. Например, если транзакция, доступная только для чтения, вызовет транзакцию, доступную только для чтения, то вся транзакция будет доступна только для чтения.

Можно ли использовать шаблон Open Session in View, чтобы разрешить ленивую загрузку? Таким образом, ваш метод хэндла вообще не обязательно должен быть транзакционным.

11
ответ дан 24 November 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: