2009년 09월 25일
[spring-jdbc] SimpleJdbcTemplate 테스트
현재 Spring 강의를 듣고 있는데..
스프링 jdbc관련해서 몇가지 테스트를 해보았다.
강사가 스프링에서 Simple자가 들어간 API명은 대부분 java5.0이상에서 지원되는거라 한다.
그래서 JdbcTemplate, NamedParameterJdbcTemplate 보다는 SimpleJdbcTemplate에 대한 내용을 테스트 해보았다.
간단히 Spring Jdbc에서 많이 쓸만한것들을 테스트 해보았다.
아직 스프링을 공부중이지만..
예전에 쓰던 코드보다 정말 간결해 진걸 느낄수 있었다.
그리고 또한 여기 나온 방법은 여러 방법중 하나일 뿐이고 스프링이라는 기본틀 내에서 다양한 모습의 코드도 있다.
이래서 스프링을 쓰는구나 하는 생각이 들정도이다.
다음은 SimpleJdbcTemplate의 Batch에 대해서 테스트 해봐야겠다.
스프링 jdbc관련해서 몇가지 테스트를 해보았다.
강사가 스프링에서 Simple자가 들어간 API명은 대부분 java5.0이상에서 지원되는거라 한다.
그래서 JdbcTemplate, NamedParameterJdbcTemplate 보다는 SimpleJdbcTemplate에 대한 내용을 테스트 해보았다.
- public class JdbcMenuDao implements MenuDao {
- private SimpleJdbcTemplate template;
- private SimpleJdbcInsert templateInsert;
- private OracleSequenceMaxValueIncrementer inc;
- public void setDataSource(DataSource dataSource) {
- this.template = new SimpleJdbcTemplate(dataSource);
- this.templateInsert = new SimpleJdbcInsert(dataSource).withTableName("MENU");
- this.inc = new OracleSequenceMaxValueIncrementer(dataSource, "ID_SEQUENCE");
- }
- // 개별건 처리
- public Menu getMenu(Integer id) {
- return (Menu) template.queryForObject(
- "SELECT * FROM MENU WHERE MENU_ID=?",
- ParameterizedBeanPropertyRowMapper.newInstance(Menu.class), id);
- }
- // 리스트 처리
- //Spring2.5에서 SqlParameterSource처리가 가능
- // 여러가지 조건값을 map으로 담아서 처리하면 된다. 가장 유용하게 쓰일거 같은 처리문
- public List<Menu> getMenus(Map paramsMap) {
- MapSqlParameterSource params = new MapSqlParameterSource();
- params.addValues(paramsMap);
- return template.query(
- "SELECT * FROM MENU WHERE MENU_NAME like :menu_name",
- ParameterizedBeanPropertyRowMapper.newInstance(Menu.class),
- params);
- }
- //일반적인 저장
- public int save(final Menu menu) {
- return template
- .update(
- "INSERT INTO MENU(MENU_ID, MENU_NAME, MENU_PRICE) VALUES(:menuId, :menuName, :menuPrice)",
- new BeanPropertySqlParameterSource(menu));
- }
- // set메쏘드에서 정의한 SimpleJdbcInsert를 이용한 저장
- //쿼리 문이 없어졌다.
- //내가 이렇게 갈수 알았지..
- public int save2(final Menu menu) {
- //자동시퀀스 값 가져오기
- //set메쏘드에서 정의
- menu.setMenuId(inc.nextIntValue());
- Map<String, Object> parameters = new HashMap<String, Object>();
- parameters.put("menu_id", menu.getMenuId());
- parameters.put("menu_name", menu.getMenuName());
- parameters.put("menu_price", menu.getMenuPrice());
- // Number menuId = templateInsert.executeAndReturnKey(parameters);
- // menu.setMenuId(menuId.intValue());
- return templateInsert.execute(parameters);
- }
- //또다른 방법
- public int save3(final Menu menu) {
- SqlParameterSource parameters = new MapSqlParameterSource()
- .addValue("menu_id", menu.getMenuId())
- .addValue("menu_name", menu.getMenuName())
- .addValue("menu_price", menu.getMenuPrice());
- return templateInsert.execute(parameters);
- }
- // 모든 리스트 가져오기
- public List<Menu> getAllMenu() {
- return template.query("SELECT * FROM Menu",
- ParameterizedBeanPropertyRowMapper.newInstance(Menu.class));
- }
- }
간단히 Spring Jdbc에서 많이 쓸만한것들을 테스트 해보았다.
아직 스프링을 공부중이지만..
예전에 쓰던 코드보다 정말 간결해 진걸 느낄수 있었다.
그리고 또한 여기 나온 방법은 여러 방법중 하나일 뿐이고 스프링이라는 기본틀 내에서 다양한 모습의 코드도 있다.
이래서 스프링을 쓰는구나 하는 생각이 들정도이다.
다음은 SimpleJdbcTemplate의 Batch에 대해서 테스트 해봐야겠다.
# by | 2009/09/25 14:34 | [IT] 스터디이야기 | 트랙백 | 덧글(0)


![[리더스북] 넛지-똑똑한 선택을 이끄는 힘](http://image.aladdin.co.kr/coveretc/book/coveroff/scm6388636469.jpg)







☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]