1-7. 레코드 update 하기
PizzaApp의 내용을 다음과 같이 수정합니다.
Pizza pizza = new Pizza();
pizza.setName("yuonghoe's pizza");
pizza.setPrice(10000);
pizza.setSize("Large");
pizza.setToping("Pepperoni");
pizza.setName("yuonghoe's pizza");
pizza.setPrice(10000);
pizza.setSize("Large");
pizza.setToping("Pepperoni");
s.save(pizza);
pizza.setPrice(15000);
s.update(pizza);
처음에 가격을 만원으로 했다가 너무 낮아서 만오천원으로 올리고 s.update(pizza); 메소드를 사용하여 update를 합니다.
실행시키면 콘솔 창에 다음과 같이 출력됩니다.
Hibernate: select nextval ('Pizza_PizzaId_Seq')
Hibernate: insert into O_Pizza (toping, price, name, size, pizzaId) values (?, ?, ?, ?, ?)
Hibernate: update O_Pizza set toping=?, price=?, name=?, size=? where pizzaId=?
Hibernate: insert into O_Pizza (toping, price, name, size, pizzaId) values (?, ?, ?, ?, ?)
Hibernate: update O_Pizza set toping=?, price=?, name=?, size=? where pizzaId=?
bk87.bmp
DB를 확인해 본 결과 15000원으로 update된 것을 확인 할 수 있습니다.
PizzaApp에서 작성한 코드에서 s.update(pizza);를 삭제하고 다음과 같이 입력해 보겠습니다.
Pizza pizza = new Pizza();
pizza.setName("chanwook's pizza");
pizza.setPrice(10000);
pizza.setSize("Large");
pizza.setToping("Kimchi");
pizza.setName("chanwook's pizza");
pizza.setPrice(10000);
pizza.setSize("Large");
pizza.setToping("Kimchi");
s.save(pizza);
pizza.setPrice(15000);
s.update(pizza); 가 빠진것을 제외하면 다른 부분은 거의 동일합니다. 이 것을 실행시키면 콘솔창에 다음과 같이 출력이 되고 DB에서 확인을 해도 역시 update 된 것을 확인할 수 있습니다.
Hibernate: select nextval ('Pizza_PizzaId_Seq')
Hibernate: insert into O_Pizza (toping, price, name, size, pizzaId) values (?, ?, ?, ?, ?)
Hibernate: update O_Pizza set toping=?, price=?, name=?, size=? where pizzaId=?
Hibernate: insert into O_Pizza (toping, price, name, size, pizzaId) values (?, ?, ?, ?, ?)
Hibernate: update O_Pizza set toping=?, price=?, name=?, size=? where pizzaId=?
bk88.bmp
왜 이럴지는 HIA 4장에 나오는 그림을 보며 생각해 보겠습니다.