작성
·
165
0
선생님 항상 감사합니다.
정보수정처리에서 질문이 있습니다.
사용자 정보를 수정하는 처리를 할 때, 선생님께서는
컨트롤러에서 이렇게 설정하고, 서비스에서
이런식으로 modifyUserBean을 설정하셔서 처음 수정화면에 들어갔을 때, user_id와 user_name을 받아올 수 있도록 하셨는데요. 저는 이걸 더 간단하게 해보고자
컨트롤러
서비스
Dao
매퍼
이런식으로 해줘서, 서비스에서 set을 통해 넣어주는게 아니라, Dao에서부터 아예 빈을 받아오도록 해서 그 빈을 tempModifyUserBean에 넣어줬는데요.
(tempModifyUserBean = userDao.getTempModifyUserBean(tempModifyUserBean);이렇게 set을 통해 넣어준게 아니라 바로 넣어줘버렸습니다. )
이렇게 하니깐 수정화면에 들어갔을 때 user_name이랑 user_id가 안나옵니다.
혹시 그 이유를 알 수 있을까요?
서비스에서 System.out.println()으로 이름을 찍어봤을 때는 잘 나오는데요. 이유를 알고 싶습니다.
답변 2
1
자바의 참조변수 개념을 생각해보시면 됩니다. controller의 메서드에서 주입받은 객체는 request영역에 자동 저장이 됩니다. 이에 이 객체를 service 메서드를 호출할 때 넘겨주면 객체의 주소값을 통해 request영역에 저장된 객체에 접근할 수 있게 됩니다. 허나 데이터베이스 실행 후 반환 받은 객체를 새롭게 생성된 객체가 됩니다. 이때 service 메서드의 매개변수에 다른 객체의 주소값을 넣어주면 해당 변수에는 request영역에 저장된 객체가 아닌 다른 객체의 주소값이 담기게됩니다. 즉, request 영역에 저장된 객체의 프로퍼티에는 아무런 값도 담기게 되지 않게 되는거죠... 자바 프로그래밍 언어에서 객체와 참조변수와 관계를 잘 생각해보시면 답을 찾으실 수 있을겁니다.
0