Я вам не скажу за всю Одессу, но у нас в Сибири считается, что
1)
@GeneratedValue(strategy = GenerationType.TABLE)
- говорит, что нужно использовать таблицу для генерации PK. Не таблицу, на которую маппится сущность, а просто таблицу. Отсюда и возникает таблица hibernate_sequences. И возникает она из-за hibernate.hbm2ddl.auto=update.
2) Про длину колонки, это опять из-за hibernate.hbm2ddl.auto=update.
3)
@Transaction
говорит, что метод будет транзакционным. Что это значит. Это значит, что вызов метода будет обернут в proxy объект, у которого будет сессия, и при вызове всех вложенных методов эта сессия будет одна и та же, и при завершении метода транзакция закроется.
4)
propagation = Propagation.REQUIRED
- это означает, что наличие сессии при вызове метода обязательно, если ее нету, то hibernate попытается ее создать.
5) Откат транзакции (rollbak грубо говоря) происходит, по-умолчанию, только в случае возникновения
RuntimeException
, как этим управлять написано в документации к hibernate.
6) значение в аннотации
@Repository("personDao")
задает имя бина.
Теперь по классике надо что-то по советовать. Советую Вам не использовать hibernate.hbm2ddl.auto=update. Лучше посмотрите в сторону
liquibase для управления состоянием БД.
И почитайте вводные туториалы по Spring, разберитесь как работает IoC в Spring, как работает AOP в Spring, как Spring управляет бинами. И тогда Вам станет все понятно.
Дерзайте, удачи Вам!