2008. 8. 26. 22:05
이전글(~2009)
SimpleJdbcInsert 와 SimpleJdbcCall는 메타데이타를 이용해서 해당 작업을 단순화시킨 클래스이다. 먼저 SimpleJdbcInsert 를 보자.
SimpleJdbcInsert 는 먼저 클래스가 초기화 될때 withTableName 메서드를 이용하여 테이블명을 지정하고 입력할 데이터를 Map으로 매핑하면 된다.
또한 자동증가값 필드가 필요하다면 usingGeneratedKeyColumns()메서드를 이용하면 된다.
만약 특별한 필드명으로 바꾸고 싶다면, usingColumns()를 이용해서 바꿀수도 있다.
이 경우 도메인 모델 객체가 은닉화되어 어떻게 매핑되는지 알수 없다. 그래서 더욱 편리한 방법을 또 제공하고 있다.
이런 방법들은 JdbcTemplate 시리즈가 거의 비슷하게 적용되고 있다.
SimpleJdbcInsert 는 먼저 클래스가 초기화 될때 withTableName 메서드를 이용하여 테이블명을 지정하고 입력할 데이터를 Map으로 매핑하면 된다.
public class JdbcActorDao implements ActorDao {
private SimpleJdbcTemplate simpleJdbcTemplate;
private SimpleJdbcInsert insertActor;
public void setDataSource(DataSource dataSource) {
this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
this.insertActor = new SimpleJdbcInsert(dataSource).withTableName("t_actor");
}
public void add(Actor actor) {
Map<String, Object> parameters = new HashMap<String, Object>(3);
parameters.put("id", actor.getId());
parameters.put("first_name", actor.getFirstName());
parameters.put("last_name", actor.getLastName());
insertActor.execute(parameters);
}
// ... additional methods
}
private SimpleJdbcTemplate simpleJdbcTemplate;
private SimpleJdbcInsert insertActor;
public void setDataSource(DataSource dataSource) {
this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
this.insertActor = new SimpleJdbcInsert(dataSource).withTableName("t_actor");
}
public void add(Actor actor) {
Map<String, Object> parameters = new HashMap<String, Object>(3);
parameters.put("id", actor.getId());
parameters.put("first_name", actor.getFirstName());
parameters.put("last_name", actor.getLastName());
insertActor.execute(parameters);
}
// ... additional methods
}
또한 자동증가값 필드가 필요하다면 usingGeneratedKeyColumns()메서드를 이용하면 된다.
public class JdbcActorDao implements ActorDao {
private SimpleJdbcTemplate simpleJdbcTemplate;
private SimpleJdbcInsert insertActor;
public void setDataSource(DataSource dataSource) {
this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
this.insertActor =
new SimpleJdbcInsert(dataSource)
.withTableName("t_actor")
.usingGeneratedKeyColumns("id");
}
public void add(Actor actor) {
Map<String, Object> parameters = new HashMap<String, Object>(2);
parameters.put("first_name", actor.getFirstName());
parameters.put("last_name", actor.getLastName());
Number newId = insertActor.executeAndReturnKey(parameters);
actor.setId(newId.longValue());
}
// ... additional methods
}
private SimpleJdbcTemplate simpleJdbcTemplate;
private SimpleJdbcInsert insertActor;
public void setDataSource(DataSource dataSource) {
this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
this.insertActor =
new SimpleJdbcInsert(dataSource)
.withTableName("t_actor")
.usingGeneratedKeyColumns("id");
}
public void add(Actor actor) {
Map<String, Object> parameters = new HashMap<String, Object>(2);
parameters.put("first_name", actor.getFirstName());
parameters.put("last_name", actor.getLastName());
Number newId = insertActor.executeAndReturnKey(parameters);
actor.setId(newId.longValue());
}
// ... additional methods
}
만약 특별한 필드명으로 바꾸고 싶다면, usingColumns()를 이용해서 바꿀수도 있다.
this.insertActor =
new SimpleJdbcInsert(dataSource)
.withTableName("t_actor")
.usingColumns("first_name", "last_name")
.usingGeneratedKeyColumns("id");
SimpleJdbcInsert 역시 Map 대신 도메인 모델 객체를 파라메터로 넘길수 있다.
...
public void add(Actor actor) {
SqlParameterSource parameters = new BeanPropertySqlParameterSource(actor);
Number newId = insertActor.executeAndReturnKey(parameters);
actor.setId(newId.longValue());
}
...
new SimpleJdbcInsert(dataSource)
.withTableName("t_actor")
.usingColumns("first_name", "last_name")
.usingGeneratedKeyColumns("id");
SimpleJdbcInsert 역시 Map 대신 도메인 모델 객체를 파라메터로 넘길수 있다.
...
public void add(Actor actor) {
SqlParameterSource parameters = new BeanPropertySqlParameterSource(actor);
Number newId = insertActor.executeAndReturnKey(parameters);
actor.setId(newId.longValue());
}
...
이 경우 도메인 모델 객체가 은닉화되어 어떻게 매핑되는지 알수 없다. 그래서 더욱 편리한 방법을 또 제공하고 있다.
...
public void add(Actor actor) {
SqlParameterSource parameters = new MapSqlParameterSource()
.addValue("first_name", actor.getFirstName())
.addValue("last_name", actor.getLastName());
Number newId = insertActor.executeAndReturnKey(parameters);
actor.setId(newId.longValue());
}
...
public void add(Actor actor) {
SqlParameterSource parameters = new MapSqlParameterSource()
.addValue("first_name", actor.getFirstName())
.addValue("last_name", actor.getLastName());
Number newId = insertActor.executeAndReturnKey(parameters);
actor.setId(newId.longValue());
}
...
이런 방법들은 JdbcTemplate 시리즈가 거의 비슷하게 적용되고 있다.
'이전글(~2009)' 카테고리의 다른 글
[서적] 부의 역사 (2) | 2008.08.27 |
---|---|
[SpringJDBC] SimpleJdbcCall (0) | 2008.08.26 |
[SpringJDBC] SimpleJdbcInsert (0) | 2008.08.26 |
[SpringJDBC] SimpleJdbcTemplate (0) | 2008.08.26 |
[SpringJDBC] Batch (0) | 2008.08.26 |
[SpringJDBC] NamedParameterJdbcTemplate (0) | 2008.08.26 |
댓글을 달아 주세요