Spring 3 + Hibernate: я должен использовать грязную проверку, и как мне сделать это, используя транзакции на основе аннотаций? - PullRequest
0 голосов
/ 07 апреля 2011

Во-первых, я новичок в Spring, и я не совсем понимаю, как он обрабатывает транзакции Hibernate, поэтому не стесняйтесь рассказать мне кое-что об этом! : D

Я пишу приложение со стандартным уровнем Controller, Service, Data Access и Persistence. Так у меня есть например FileController, FileService, FileDao, с SpringFramework для обработки Hibernate. </p> <pre><code>@Service public class FileService { @Autowired FileDao fileDao; public FileService() {} @Transactional public File getRootFile() { return fileDao.getRootFile(); } @Transactional public File getById(long id) { return fileDao.getById(id); } @Transactional public void save(File file) { fileDao.save(file); } }

Я также использую шаблон OpenSessionInView с OpenSessionInViewInterceptor.

У меня есть два вопроса:

  • Должен ли я использовать грязную проверку с открытым сеансом в представлении? Может ли это привести к тому, что какие-либо изменения, которые представление потенциально может внести в модель, будут сохранены?
  • Если грязная проверка - хорошая идея, как мне это сделать? Похоже, что сейчас мне нужно сделать вызов save() или update(), иначе грязные объекты не будут сохранены после возвращения моего контроллера. Заранее спасибо!

1 Ответ

1 голос
/ 07 апреля 2011

Если вы имеете в виду оптимистическую блокировку, тогда посмотрите документацию Hibernate: Глава 11.3. Оптимистичный контроль параллелизма

Или JPA http://blogs.oracle.com/carolmcdonald/entry/jpa_2_0_concurrency_and

Нужная аннотация: @Version

@Version
@Column(name = "version", nullable = false, length = 5)
public int getVersion() { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...