Создайте объект из базы данных, используя пружину, указав идентификатор строки для создания объекта из - PullRequest
0 голосов
/ 24 марта 2011

Чтобы упростить этот вопрос, возможно ли заставить пружину вести себя в очень простом образце активной записи

Справочная информация:

У меня есть система с несколькими типами существующих моделей данных, все с UIDхранится в таблицах только для чтения.Когда пользователь вводит данные в систему, вход сравнивается с существующей строкой, используя UID, чтобы сопоставить входные данные с существующими данными.

Проблема:

Я хочу использовать Spring для построения объектов из существующих данных для сравнения, это позволит мне легко добавлять и настраивать модели данных.Я не хочу использовать hibernate или любой другой сложный ORM, потому что мне нужен только доступ на чтение и я хочу, чтобы система была максимально простой и легкой, поэтому я рассматриваю простой шаблон jdbc для пружин.

Как следуетЯ передаю importId для создания объекта?Я мог бы создать метод установки, но тогда мне придется вызывать конструктор и располагать пустой объект, пока я не установлю идентификатор, с которого я начну инициализировать другие переменные, это кажется неудобным.Есть ли стандартный способ сделать это?Я подозреваю, что могу упустить что-то очевидное.Есть ли другие предложения для этого?

Не увязая в коде, примером класса объектов, созданного из существующих данных, может быть:

public class Import extends Model {
    private JdbcTemplate mJdbcTemplate;
    private int mImportId;
    public Import(int importId, JdbcTemplate template) {
        this.mImportId = importId;
        this.mJdbcTemplate = jdbcTemplate;
        ...
        // construct object form fields
        ... 
    }
    ... 
    // Other stuff
    ... 
} 
<beans>
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean> 
    <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    ...
    data source setup
    ...
    </bean>
    <bean id="import" class="package.models.Import">
        <constructor-arg ref="jdbcTemplate"/>
        ... what to do here...
    </bean>
</beans>

1 Ответ

2 голосов
/ 25 марта 2011

Для реализации вам необходим объект RowMapper, тогда вы можете использовать метод jdbcTemplate.queryForObject.

public Import getImportById(long id) {
       return jdbcTemplate.queryForObject(
          "Select a, b FROM import WHERE id = ?",
          this.importRowMapper,
          id);
}


private RowMapper<Import> importRowMapper = new RowMapper<Import>() {    
    public Customer mapRow(ResultSet resultSet, int i) throws SQLException {
      long id = resultSet.getInt("id");
      String a = resultSet.getString("a");
      String b = resultSet.getString("b");
      return new Customer(id, a, b);
    }

Вы можете посмотреть этот блог: Зеленые бобы: получениеНачал со Spring в вашем Service Tier , это немного описывает это.( Только последний раздел в этом блоге посвящен JPA. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...