Другая архитектура, более полная, но элегантная:
ДА . Вы можете изменить имена таблиц, используя NamingStrategies :
public class MyNamingStrategy extends DefaultNamingStrategy {
...
@Override
public String tableName(String tableName) {
return tableName+yearSuffixTable;
}
...
}
И, когда вы хотите использовать таблицы _year, вы должны создать сеанс с Hibernate, который переопределяет имена таблиц:
SessionFactory sessionFactory;
Configuration config = new AnnotationConfiguration()
.configure("hibernate.cfg.xml")
.setNamingStrategy( new MyNamingStrategy () );
sessionFactory = config.buildSessionFactory();
session = sessionFactory.openSession();
Для моей архитектуры я создаю сеанс по годам и сохраняю его в карте приложений длядоступ, когда мне это нужно.
Спасибо.