Я бы попытался декомплексировать ситуацию, сделав шаг назад и введя простой бин для представления «метаданных» - то есть 300 или около того истинных / ложных значений.
На самом деле, когда имеем делос таким количеством полей вы, вероятно, будете использовать материнский компонент, содержащий дочерние компоненты, которые содержат концептуально связанные поля вместе.Например:
public class MotherBean {
private UserSettingBean userSettingBean;
private UserRelationshipBean userRelationshipBean;
private UserPreferencesBean userPreferencesBean;
...
}
Таким образом, ваш «веб-уровень» становится простым CRUD-контроллером для MotherBean
;что-то, что делается каждый день.Вы можете даже использовать что-то вроде Spring Roo , чтобы создать для этого строительные леса.
Затем, когда вы передаете этот bean-компонент на нижний уровень (уровни) (вы можете иметь или не иметь традиционный уровень «обслуживания» или «бизнес-логики» в этом проекте), вы получаете DAO, который переводитметаданные отношений в фактические отношения «многие ко многим».Учитывая количество областей, о которых мы говорим, я бы снова предложил делегировать эту работу в под-DAO (из-за отсутствия лучшего термина), которые имеют дело со связанными ссылками.
Очевидно, что путь get - это то же самое, что и в обратном направлении.Вы запрашиваете у MotherBeanDAO
метаданные, относящиеся к пользователю 1234, он запрашивает у своих делегатов DAO дочерние бины, оборачивает их, и результирующий MotherBean
проходит весь путь до веб-интерфейса.