Каков наилучший способ получить нашу личность для нашего пользователя с помощью Spring jdbcTemplate - PullRequest
1 голос
/ 05 января 2012

У меня есть два объекта домена:

  1. Пользователь (у которого есть персона)
  2. лицо

FYI : В нашем домене есть Персоны (people :-), которые не являются пользователями, поэтому мы не можем просто объединить их.

Я пытаюсь выяснить, как лучше всего заполнить объект Person в объекте User. Я предложил 3 возможных решения, и мне было любопытно, что сделали другие, и какие плюсы и минусы увидели другие.

Вариант 1:

Подключите наши UserDao и PersonDao к нашей Userservice, а затем userService.getUser(userId) вызовите userDAO.getUser(userId), затем возьмите пользователя, от которого мы получаем ответ, и позвоните user.setPerson(personDao.getPerson(user.getPersonId()))

Плюсы : Не нужно подключать дао внутри дао (не так ли плохо ... не уверен)

Минусы : Что-то не так, когда дао возвращает объект домена, который не был полностью инициализирован, верно? Тогда вам нужно беспокоиться о том, есть ли человек в объекте User. Попадание в базу данных дважды. Также вам необходимо добавить personId к объекту User вместо того, чтобы просто иметь объект Person.

Вариант 2: Пусть метод UserDao getUser () объединит пользовательскую таблицу с таблицей person, а затем внутри UserRowMapper установит пользователя и затем вызовет user.setPerson(personRowMapper.mapRow(rs, rowNum))

Плюсы : Не нужно подключать дао внутри дао (не так ли плохо ... не уверен). Кроме того, вы нажимаете на базу данных только один раз, вместо того, чтобы дважды нажимать на базу данных в параметрах.

Минусы : PersonRowMapper будет своим собственным классом и не будет инкапсулирован в PersonDao (должно быть?).

Вариант 3:

Подключите PersonDao к UserDao, а затем просто позвоните user.setPerson(personDao.getPerson(rs.getLong("person_id")));

Плюсы : PersonDao отвечает за получение объекта домена Person, и userDao не нужно знать подробности о том, как этот человек был извлечен.

Минусы : personDao подключен к userDao (это плохо?). Попадание в базу данных дважды.

1 Ответ

1 голос
/ 06 января 2012

Это второй вариант, так как вы указали, что двойное попадание в базу данных является дорогостоящим.

У меня есть одно предложение, не правда ли, Пользователь - это Персона (Наследование), а не Пользователь имеет Персона (Состав)

...