DAO(Repository)์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์งˆ๋ฌธ

5,170 views
Skip to first unread message

์ด์„ฑํ˜„(kemuel)

unread,
Mar 17, 2012, 12:39:50โ€ฏAM3/17/12
to Korea Spring User Group
DAO(Repository)์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋ฅผ Service์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ง€ ์•„๋‹ˆ๋ฉด Controller์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ง€
์˜๋ฌธ์ž…๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋Š” ์ € ๋‚˜๋ฆ„๋Œ€๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ์ฝ”๋“œ ์ž…๋‹ˆ๋‹ค.
MemberDAO์—์„œ ์ค‘๋ณต ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ ์‹œ์ผœ Controller์—์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
DuplicateMemberException๋Š” DuplicateKeyException์„ ์˜๋ฏธ ์žˆ๋Š” uncheck
exception ์œผ๋กœ ์ „ํ™˜ ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  Exception์ž…๋‹ˆ๋‹ค.
๋จผ์ € Member๊ฐ€ ์ค‘๋ณต์ธ์ง€ ์•„๋‹Œ์ง€ select๋กœ ๊ฒ€์‚ฌ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ €๋Š” ์ค‘๋ณต์„ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ฆ‰, ์ค‘๋ณต Member๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์˜ˆ์™ธ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ถ๊ธˆํ•œ ์ ์€ controller์—์„œ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์ ์ธ ๊ฒƒ์„ controller์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•˜๋Š”์ง€
MemberService์—์„œ ๋˜ try catch๋ฌธ์œผ๋กœ ์˜ˆ์™ธ๋ฅผ ์žก์•„์„œ ์ฒ˜๋ฆฌํ•˜์—ฌ ์˜๋ฏธ ์žˆ๋Š” ์˜ˆ์™ธ๋ฅผ controller๋กœ
throws ํ•˜๊ฑฐ๋‚˜
์•„๋‹ˆ๋ฉด return value๋ฅผ true/fase ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฑด์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์€ controller์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฉด MemberService ์ชฝ์ด ๊น”๋”ํ•œ(๋‚˜์ด์Šค)ํ•œ ์ฝ”๋“œ๊ฐ€ ๋˜์–ด ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์˜ˆ์™ธ ์ „๋žต(์ฒ˜๋ฆฌ)๊ฐ€ ์žˆ๋‹ค๋ฉด ๋‹ต๋ณ€ ๋ถ€ํƒ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

============== Controller ์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ====================
========== MemberDAO =============================
@Override
public void insertMember(Member member) throws
DuplicateMemberException {
try {
sqlMapClientTemplate.insert("member.insertMember", member);
} catch (DuplicateKeyException e) {
throw new DuplicateMemberException(e);
}
}

========== MemberService =============================
@Override
public void registMember(Member member) {
memberDAO.insertMember(member);
}

========== MemberController =============================
@RequestMapping("/member/registmember.do")
public String registMember(Member member) {
try {
memberService.registMember(member);
return "main"
} catch (DuplicateMemberException e) {
return "/member/viewregistmemberform";
}
}

============== service์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ====================
========== MemberService =============================
@Override
public boolean registMember(Member member) {
try {
memberDAO.insertMember(member);
return true;
} catch (DuplicateMemberException e) {
return false
}
}

========== MemberController =============================
@RequestMapping("/member/registmember.do")
public String registMember(Member member) {
if(memberService.registMember(member) {
return "main";
} else {
return "viewregistmemberform";
}
}


๊ฐ•๋™์šฑ

unread,
Mar 17, 2012, 8:39:38โ€ฏPM3/17/12
to ks...@googlegroups.com
๊ฐœ์ธ์ ์œผ๋กœ๋Š” @Controller์— try โ€ฆ catch ๋ฌธ์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์ด ์˜ณ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Validator๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒ€์ฆ์„ ์„œ๋น„์Šค ๊ณ„์ธต์œผ๋กœ ์ด๋™์‹œํ‚ค๋”๋ผ๋„ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ BindingResult๋ฅผ ์ด์šฉํ•ด ์—๋Ÿฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฝ‘์•„๋ณด๋Š” ๋ฐฉ์‹์ด ์—๋Ÿฌ์ฒ˜๋ฆฌ์—๋„ ๋”์šฑ ์ ์ ˆํ•  ๋“ฏ ์‹ถ๋„ค์š”.

<form:errors>๊ฐ™์€ ์Šคํ”„๋ง EL๋ฌธ๋ฒ•๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ด์ง€๊ตฌ์š”.

์ด์„ฑํ˜„(kemuel)

unread,
Mar 18, 2012, 1:21:57โ€ฏAM3/18/12
to Korea Spring User Group
์ €๋‘ try catch๊ฐ€ controller์— ์žˆ๋Š”๊ฒŒ ๋ณด๊ธฐ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Validation์€ ๊ฐ’(value)๊ฒ€์ฆ๋งŒ ํ•˜๋Š” ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ
Exception ์ฒ˜๋ฆฌ๋„ ํ•˜๋Š”๊ฑฐ ๊ตฐ์š”.

view(jsp)์™€ controller ์‚ฌ์ด์— ๊ฐ’ ๊ฒ€์ฆ๋งŒ ํ•ด๋ด์„œ ํ™• ์™€๋‹ฟ์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ๋ฐ
Validator๋กœ Exception ์ฒ˜๋ฆฌํ•˜๋Š” ์ฐธ์กฐ ์‚ฌ์ดํŠธ๋“ ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ํ๋ฆ„๋งŒ ์ข€ ์•Œ๋ ค์ฃผ ์ฃผ์‹œ๋ฉด ์ •๋ง ๊ฐ์‚ฌ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Sungchul Park

unread,
Mar 18, 2012, 10:30:00โ€ฏPM3/18/12
to ks...@googlegroups.com

์ด ๊ฒฝ์šฐ์—๋Š” ์ปจํ„ฐ๋กค๋Ÿฌ์—์„œ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ชฝ์ด ์ ์ ˆํ•˜๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค.

MemberDAO์—์„œ๋Š” DB Access ๊ด€๋ จ ์˜ˆ์™ธ์ธ DuplicateKeyException๋ฅผ ๋„๋ฉ”์ธ ์˜ˆ
์™ธ์ธ DuplicateMemberException๋กœ ์ž˜ ๋ฐ”๊ฟ”์„œ ์„œ๋น„์Šค์—์„œ ๋„˜๊ฒผ๋Š”๋ฐ
DuplicateKeyException ์ž์ฒด๊ฐ€ ์ด๋ฏธ ๊ตฌํ˜„ ๊ธฐ์ˆ  ์˜์กด์„ฑ์„ ์ˆจ๊ธด ์ถ”์ƒํ™”ํ•œ ๋œ ์˜ˆ
์™ธ์ด๋‚˜ ๋„๋ฉ”์ธ์˜ ์Šคํ”„๋ง ์˜์กด์„ฑ๋„ ์ค„์ธ๋‹ค๋Š” ๊ด€์ ์—์„œ๋Š” ์˜๋ฏธ ์žˆ๋Š” ์ž‘์—… ๊ฐ™์Šต๋‹ˆ๋‹ค.

MemberService์—์„œ ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜์— throws DuplicateMemberException๋ฅผ ์ถ”
๊ฐ€ํ•ด์„œ ๋ช…๋ฌธํ™”ํ–ˆ์œผ๋ฉด ์ข‹์•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

MemberController์˜ try-catch๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์ฐจ์›์—์„œ๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ณต
ํ†ต์‚ฌํ•ญ์ด ์•„๋‹ˆ๋ผ ํŠน์ • ์—…๋ฌด์˜ ์›Œํฌํ”Œ๋กœ์— ํ•ด๋‹นํ•˜๋ฏ€๋กœ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ํ๋ฆ„์„ ์ œ
์–ดํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ์™œ ๋‘ ๊ฒฝ์šฐ๋ฅผ ๋‘๊ณ  ๊ณ ๋ฏผํ•˜์‹œ๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ฒ ๋„ค์š”. ์„œ๋น„์Šค์—์„œ ์ฒ˜๋ฆฌ
ํ•˜๋ฉด ์–ด๋–ค ์ด๋“์ด ์žˆ๋Š” ๊ฑฐ์ฃ ? ์ฝ”๋“œ๋Ÿ‰์ด ๋Š˜์—ˆ์„ ๋ฟ ์•„๋‹ˆ๋ผ ์„œ๋น„์Šค์˜ ๋ฐ˜ํ™˜๊ฐ’์ด
์–ด๋–ค ์˜๋ฏธ์ธ์ง€ ์•Œ๋ ค๋ฉด javadoc ๊ฐ™์€ ๋ฌธ์„œ๋ฅผ ๋ด์•ผ๋งŒ ๋ถ„๋ช…ํ•ด์ง€๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€๊นŒ์ง€
์ƒ๊ฒผ๋Š”๋ฐ์š”.

์ด์ƒ์šฉ

unread,
Mar 18, 2012, 11:36:16โ€ฏPM3/18/12
to ks...@googlegroups.com
์Œ.. ์ €๋Š” ์•ฝ๊ฐ„ ์ƒ๊ฐ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ์ž์˜ ์„ฑํ–ฅ์ด๋‚˜ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ ํ”Œ๋กœ์›Œ์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ

๋˜๋„๋ก์ด๋ฉด Controller์—์„œ๋Š” Exception ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ํŽธ์ด ์ข‹๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค.
์ œ ๊ฒฝ์šฐ์—๋Š”ย 
View - Controller - Validation Logic- Business Logic - DAO

์ด๋Ÿฐ์‹์œผ๋กœ ๋งŽ์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

์•ฝ๊ฐ„์˜ ์ฝ”๋“œ๊ฐ€ ์ฆ๊ฐ€๋˜๊ธฐ๋Š” ํ•˜์ง€๋งŒย 

์ „์ฒด์ ์ธ ์ฝ”๋“œ์˜ ๋ณต์žก๋„๋‚˜ ์žฌํ™œ์šฉ๋ฉด์—์„œ๋„ ๋” ํšจ์œจ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
(๋ฌผ๋ก  Class์˜ ์–‘์ด ๋งŽ์ด ๋Š˜์–ด๋‚˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ^^;;)


2012๋…„ 3์›” 19์ผ ์˜ค์ „ 11:30, Sungchul Park <gyu...@gmail.com>๋‹˜์˜ ๋ง:


--
Google ๊ทธ๋ฃน์Šค 'Korea Spring User Group' ๊ทธ๋ฃน์— ๊ฐ€์ž…ํ–ˆ์œผ๋ฏ€๋กœ ๋ณธ ๋ฉ”์ผ์ด ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ทธ๋ฃน์— ๊ฒŒ์‹œํ•˜๋ ค๋ฉด ks...@googlegroups.com(์œผ)๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์„ธ์š”.
๊ทธ๋ฃน์—์„œ ํƒˆํ‡ดํ•˜๋ ค๋ฉด ksug+unsubscribe@googlegroups.com๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.
๋” ๋งŽ์€ ์˜ต์…˜์„ ๋ณด๋ ค๋ฉด http://groups.google.com/group/ksug?hl=ko์—์„œ ๊ทธ๋ฃน์„ ๋ฐฉ๋ฌธํ•˜์„ธ์š”.


Sungchul Park

unread,
Mar 19, 2012, 12:11:38โ€ฏAM3/19/12
to ks...@googlegroups.com

> ๋˜๋„๋ก์ด๋ฉด Controller์—์„œ๋Š” Exception ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ํŽธ์ด ์ข‹๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค.
์–ด๋–ค ์ด์œ ์ธ์ง€ ๊ถ๊ธˆํ•˜๋„ค์š”.
๊ด€๋ จ ์ž๋ฃŒ๋ผ๋„ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ณ ๋ง™๊ฒ ์Šต๋‹ˆ๋‹ค.

> ์ œ ๊ฒฝ์šฐ์—๋Š”
> View - Controller - Validation Logic- Business Logic - DAO
>

Validation Logic์ด ํ•˜๋Š” ์—ญํ• ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ด์ƒ์šฉ

unread,
Mar 19, 2012, 12:21:57โ€ฏAM3/19/12
to ks...@googlegroups.com
์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์„ค๋ช…์„ ๋“œ๋ฆฌ์ž๋ฉด..
Validation Logic ๋ถ€๋ถ„์€ Controller์—์„œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•œ๋‹ค๋˜์ง€.. ์‹ค์ œ๋กœ Repository๋‹จ๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฑฐ๋ฅด๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Exception ์ฒ˜๋ฆฌ๋Š” Controller์—์„œ ๋˜๋„๋ก์ด๋ฉด ํ•˜์ง€ ์•Š๋Š” ํŽธ์ด๋ผ๋Š” ๋ง์€..ย 
์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” logic์„ ๋”ฐ๋กœ ์ž‘์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๋ง์ž…๋‹ˆ๋‹ค.

Controller์—์„œ ์ฒ˜๋ฆฌํ•ด๋„ ์ƒ๊ด€์—†์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ์ง€์ €๋ถ„ํ•œ ์ฝ”๋“œ๋ฅผ ์‹ซ์–ดํ•ด์„œ^^;;

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋Š” View๋‹จ์œผ๋กœ ์ •๋ณด๋ฅผ ๋˜์ €๊ฑฐ๋‚˜ ํ•ฉ๋‹ˆ๋‹ค.
(์ฒ˜๋ฆฌํ•œ๋‹ค๋Š”๊ฑด ํ•ด๋‹น ์˜ค๋ฅ˜๋ฅผ ํŽ˜์ด์ง€์— ๋ณด์ด์ง€ ์•Š๊ณ  ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•ฉ๋‹ˆ๋‹ค)

์ €์ฒ˜๋Ÿผ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„์žˆ๋‹ค๋Š” ๊ฑธ ์ฐธ๊ณ ํ•˜์‹œ๋ผ๊ณ  ๋ง์”€๋“œ๋ฆฌ๋Š”๊ฒ๋‹ˆ๋‹ค.^^;;

2012๋…„ 3์›” 19์ผ ์˜คํ›„ 1:11, Sungchul Park <gyu...@gmail.com>๋‹˜์˜ ๋ง:

์ด์„ฑํ˜„(kemuel)

unread,
Mar 19, 2012, 2:39:15โ€ฏAM3/19/12
to Korea Spring User Group
> ๋˜๋„๋ก์ด๋ฉด Controller์—์„œ๋Š” Exception ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ํŽธ์ด ์ข‹๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค.
์ €๋Š” Controller์—์„œ try catch ๋ฌธ์ด ๋“ค์–ด ๊ฐ€์„œ ์ข‹์ง€ ์•Š๋‹ค๊ธฐ ๋ณด๋‹ค๋Š”
Business Logic์ด ๋“ค์–ด ๊ฐ€๋Š”๊ฒŒ ์•„๋‹Œ๊ฐ€ํ•ด์„œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐ ํ–ˆ์Šต๋‹ˆ๋‹ค.
Business Logic์ด ๋ณ€๊ฒฝ๋˜๋ฉด Controller๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€ ํ•ด์„œ์š”.
Controller๋Š” DispatcherServlet๊ฐ€ Service์— ๋งตํ•‘ํ•˜๋Š” ์ค‘๊ฐ„ ์—ญํ• ์ด๋ผ ์ƒ๊ฐ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
2๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ true/false ํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ Business ๋กœ์ง์ด Member ์ค‘๋ณต์„ ํ—ˆ์šฉ์œผ๋กœ ๋ฐ”๋€Œ๋ฉด Controller๋Š” ๋ณ€๊ฒฝ์ด ์—†์„์ˆ˜ ์žˆ๊ฒ ์ฃ (?)
Exceptoin ์ฒ˜๋ฆฌ ์ „๋žต์„ ํ”„๋ ˆ์ž„ ์›Œํฌ๋กœ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด if else ๋˜ํ•œ ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์ง€ ์•Š์„ ๊นŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ฐฉ๋ฒ•์€ ์ €์˜ ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ์ €๋‘ ์ง€๊ธˆ ํ˜„์žฌ ๊ตฌ๊ธ€๋ง ํ•˜๋ฉฐ ์ž๋ฃŒ๋“ค์„ ์ฐพ๊ณ  ์žˆ๋Š” ์ค‘์ด์—์š”..

Jihwan Kim

unread,
Mar 19, 2012, 7:09:09โ€ฏPM3/19/12
to ks...@googlegroups.com
์ €๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ต์…‰์…˜ ์ฒ˜๋ฆฌ๋ฅผ SimpleMappingExceptionResolver ๋ฅผ ์ƒ์†๋ฐ›์•„
CustomSimpleMappingExceptionResolver ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๊ณณ์œผ๋กœ ๋ชจ์•˜์Šต๋‹ˆ๋‹ค.

์˜ˆ์™ธ๋Š” ์˜ˆ์™ธ์ƒํ™ฉ๋ณ„๋กœ runtime ์ต์…‰์…˜์„ ์ƒ์†๋ฐ›์•„ ์ •์˜ํ•˜์˜€๊ตฌ์š”.

ํ—ค๋”ํƒ€์ž…(Accept)์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ(์˜ˆ์™ธ์ฝ”๋“œ ๋ฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€)์ฒ˜๋ฆฌ๋ฅผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. (html, json, xml)

๊ฐ„ํ˜น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ checked exception์„ ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”์†Œ๋“œ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” wrappingํ•˜์—ฌ runtime์ต์…‰์…˜์„
๋ฐœ์ƒํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์œ„๊ตฌ์กฐ์—์„œ๋Š” Controller์—์„œ๋Š” try{} catch{} ๋ฌธ์ด ํ•„์š”์—†๊ตฌ์š”. ์„œ๋น„์Šค๋‚˜ ๋‹ค์˜ค ๋ ˆ์ด์–ด์—์„œ๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ์žˆ์„
์ˆ˜ ์žˆ์ง€๋งŒ public method์—์„œ๋Š” ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด์„œ ์ง€์–‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์˜ˆ์™ธ๊ฐ€ ์•„๋‹Œ ์ •์ƒํ”Œ๋กœ์šฐ๋กœ ์ง„ํ–‰์‹œ์ผœ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ปจํŠธ๋กค๋Ÿฌ์—์„œ try catch๊ฐ€ ํ•„์š”ํ• ์ˆ˜๋„์žˆ๊ฒ ์œผ๋‚˜ ์•„์ง๊นŒ์ง€ ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๋Š”
์—†์—ˆ์Šต๋‹ˆ๋‹ค.(์ด ๊ฒฝ์šฐ๋Š” controller ๋ณด๋‹ค๋Š” ์„œ๋น„์Šค ๋ ˆ์ด์–ด์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ๋‚ซ์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


2012๋…„ 3์›” 19์ผ ์˜คํ›„ 3:39, ์ด์„ฑํ˜„(kemuel) <kemu...@gmail.com>๋‹˜์˜ ๋ง:

> --
> Google ๊ทธ๋ฃน์Šค 'Korea Spring User Group' ๊ทธ๋ฃน์— ๊ฐ€์ž…ํ–ˆ์œผ๋ฏ€๋กœ ๋ณธ ๋ฉ”์ผ์ด ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
> ์ด ๊ทธ๋ฃน์— ๊ฒŒ์‹œํ•˜๋ ค๋ฉด ks...@googlegroups.com(์œผ)๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์„ธ์š”.

> ๊ทธ๋ฃน์—์„œ ํƒˆํ‡ดํ•˜๋ ค๋ฉด ksug+uns...@googlegroups.com๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.

Jihwan Kim

unread,
Mar 19, 2012, 7:13:08โ€ฏPM3/19/12
to ks...@googlegroups.com
์•„ ๋ง๋ถ™์ด๋ฉด ์ด์„ฑํ˜„๋‹˜ ๋ง์”€๋Œ€๋กœ ์˜ˆ์™ธ ๋ฐœ์ƒ์€ ๋ชจ๋‘ ์„œ๋น„์Šค๋‹จ์—์„œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.(๋น„์ฆˆ๋‹ˆ์Šค ์˜ˆ์™ธ)

์ €๋„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์–ด๋””์— ๋‘์–ด์•ผ ํ•˜๋‚˜, (์ปจํŠธ๋กค๋Ÿฌ?, ์„œ๋น„์Šค?, ์ปจํŠธ๋กค๋Ÿฌ + ์„œ๋น„์Šค?) ๊ณ ๋ฏผ์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ๋Š” ์‚ฌ์ดํŠธ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ์ข€ ๋‹ฌ๋ผ์งˆ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ๊ทธ๋ถ€๋ถ„์—์„œ๋Š” ์ž์œ ๋„๋ฅผ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋™์ผํ•œ ์‚ฌ์ดํŠธ์—์„œ๋Š” ์ผ๊ด€์„ฑ์žˆ์–ด์•ผ ๊ฒ ์ฃ .


2012๋…„ 3์›” 20์ผ ์˜ค์ „ 8:09, Jihwan Kim <jhki...@gmail.com>๋‹˜์˜ ๋ง:

์ด์žฌ์ผ

unread,
Mar 20, 2012, 4:27:25โ€ฏAM3/20/12
to ks...@googlegroups.com
๋Œ€์ถฉ ๋น„์Šทํ•œ ์˜๋ฏธ์ด๊ธด ํ•œ๋ฐ์š”.

์š”์„ธ ๋ฆฌํŒฉํ† ๋ง์— ์‹ฌ์ทจํ•ด ์žˆ๋‹ค๋ณด๋‹ˆ. ์‚ด์ง ์ฝ”๋“œ๊ฐ€ ๋ณ€ํ•˜๋Š”๊ฒŒ ๋ˆˆ์— ๋ณด์ด๋„ค์š”.ย 

์ €๋ผ๋„ ์ฒ˜์Œ์—๋Š” Controller๋‹จ์—์„œ try{} catch(){}๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒย DuplicateMemberException๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ–ˆ์„๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ try {}catch(){}๋กœ ๋กœ ๊ฐ์‹ธ์คฌ๋‹ค๋ฉด. ์ค‘๋ณต์ด ๋ฐœ์ƒํ•˜๋‹ˆย MemberService ์— ๋ฉ”์†Œ๋“œ๋Š” throws๋กœย DuplicateMemberException์„ ์–ธ์ด ๋˜์–ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ˜๋Ÿฌ๊ฐ€์ง€ ์•Š์•˜์„๊นŒ ํ•˜๋„ค์š”.

๋”ฑํžˆ ์ด๊ฑด ์ด๋ ‡๊ฒŒ ํ•˜๋ผ๋Š”๊ฒƒ๋ณด๋‹ค๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์–ด๋””๋‹ค ๋†“์œผ๋ฉด ์ข‹์„์ง€ ์ •ํ•ด์ง€๋Š”๋ฉด ๋˜๋Š”๊ฒŒ ์•„๋‹Œ๊ฐ€ ์‹ถ์Šต๋‹ˆ๋‹ค.ย 

2012๋…„ 3์›” 19์ผ ์˜ค์ „ 11:30, Sungchul Park <gyu...@gmail.com>๋‹˜์˜ ๋ง:
--
Google ๊ทธ๋ฃน์Šค 'Korea Spring User Group' ๊ทธ๋ฃน์— ๊ฐ€์ž…ํ–ˆ์œผ๋ฏ€๋กœ ๋ณธ ๋ฉ”์ผ์ด ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ทธ๋ฃน์— ๊ฒŒ์‹œํ•˜๋ ค๋ฉด ks...@googlegroups.com(์œผ)๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์„ธ์š”.
๊ทธ๋ฃน์—์„œ ํƒˆํ‡ดํ•˜๋ ค๋ฉด ksug+unsubscribe@googlegroups.com๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.

๊ณ ์ข…๋ด‰

unread,
Mar 20, 2012, 10:55:35โ€ฏAM3/20/12
to ks...@googlegroups.com
์›๋ก ์ ์ธ,, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ๋„ ์ข‹์€ ์„ค๊ณ„๊ฐ€ ๋  ์ˆ˜ ์žˆ์„ (๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š”) ๊ฐœ๋…์„ ๋ง์”€ ๋“œ๋ฆฌ๋ฉด,

DAO, Service, Controller ๋ชจ๋‘ ๊ฐ ๋‹จ์—์„œ ์ ์ž˜ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

DAO์—์„œ๋Š” DB Access๊ฐ€ ์ฃผ์š” ๊ด€์‹ฌ์‚ฌํ•ญ์ด๋‹ˆ๊นŒ,

duplicated key๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด,, (์ด๊ฑด DB ์ œ์•ฝ์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๊ฒ ์ฃ ?) DuplicatedKeyException์„ ๋˜์ง€๋Š”๊ฒŒ ์ ์ ˆํ•˜๋‹ค ๋ณด๊ตฌ์š”.

Service ์—์„œ๋Š”, DAO์˜ DuplicatedKeyException์„ ๋ฐ›์•„์„œ DuplicatedMemberException์„ ๋˜์ ธ์•ผ ๋˜๊ตฌ์š”.ย 
(!! DB, DAO ๊ด€์ ์—์„œ๋Š” key๊ฐ€ ์ค‘๋ณต๋œ๊ฑฐ์ง€,, ๊ฑ”๊ฐ€ ๋ฉค๋ฒ„์ธ์ง€,, ๋จธ์‹œ๊ธฐ์ธ์ง€๋Š” ๋ชจ๋ฅด๋Š”๊ฒŒ ๋งž๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค. ๊ฑ”๊ฐ€ ๋ฉค๋ฒ„๊ณ ,, ๋ฉค๋ฒ„๋Š” ์ค‘๋ณต๋˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ์ŠคํŽ™์€ ์„œ๋น„์Šค ๋กœ์ง์— ํ•ด๋‹น๋œ๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค.)

๊ทธ๋ฆฌ๊ณ , Controller์—์„œ๋Š”,, ์„œ๋น„์Šค ๋กœ์ง ์ฒ˜๋ฆฌ ์ค‘์— ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋‹ˆ,, ์ปจํŠธ๋กค๋Ÿฌ ๋‹จ์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผย 
ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค.. ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๊ฒŒ ์ •์ƒ ํ”Œ๋กœ์šฐ๊ณ ,, ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฐœ์ƒ
์˜ˆ์™ธ๋ณ„๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•œ๋‹ค๊ณ  ํ•˜๋ฉด,

========== ย MemberController ย  =============================
@RequestMapping("/member/registmember.do")
public String registMember(Member member) {
try {
ย  memberService.registMember(member);
} catch(DuplicatedMemberException dme) {
ย  alertAndReturn("์ด๋ฏธ ๋“ฑ๋ก๋œ ํšŒ์›์ž…๋‹ˆ๋‹ค."); // ํ™”๋ฉด alert ์ฒ˜๋ฆฌย 
} catch(Exception e) {
ย  alertAndReturn("์ฒ˜๋ฆฌ ์ค‘์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค."); // ํ™”๋ฉด alert ์ฒ˜๋ฆฌ
}
ย return "success";ย 
}

2012๋…„ 3์›” 20์ผ ์˜คํ›„ 5:27, ์ด์žฌ์ผ <son...@gmail.com>๋‹˜์˜ ๋ง:
๊ทธ๋ฃน์—์„œ ํƒˆํ‡ดํ•˜๋ ค๋ฉด ksug+uns...@googlegroups.com๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.

์ด์žฌ์ผ

unread,
Mar 25, 2012, 10:05:03โ€ฏPM3/25/12
to ks...@googlegroups.com
spring mvc๋Š” ExceptionResolver๊ฐ€ ์žˆ์ž–์•„์š”(๋‹ค๋ฅธmvc๋ชจ๋ธ๋„ ๋น„์Šทํ•œ๊ฒŒ ์žˆ๋˜๋ฐ...). Controller์—์„œ๋Š” ์˜๋ฏธ์žˆ๋Š” Exception์„ ๋˜์ง€๋ฉด ๊ทธ๋งŒ์ด์ฃ . ๊ทธ๋ž˜์•ผ ๋‚ด Exception๋‹ต์ง€!!

2012๋…„ 3์›” 20์ผ ์˜คํ›„ 11:55, ๊ณ ์ข…๋ด‰ <mercu...@gmail.com>๋‹˜์˜ ๋ง:

Sanghyuk Jung

unread,
May 12, 2012, 11:05:00โ€ฏAM5/12/12
to ks...@googlegroups.com
ย  ์•ˆ๋…•ํ•˜์„ธ์š”, ๋‹ต๊ธ€์„ ๋‹ฌ๊ณ  ์‹ถ์—ˆ๋˜ ๊ธ€์ด์˜€๋Š”๋ฐ, ํ•œ๋™์•ˆ ์ •์‹ ์—†์ด ์‚ด๋‹ค๊ฐ€ ์ด์ œ ์ •์‹ ์„ ์ฐจ๋ฆด๋งŒํ•ด์„œ ๋’ค๋Šฆ๊ฒŒ ๋‹ค์‹œ๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋‹ค๋ฅธ ๋ถ„๋“ค์ด ๋งŽ์€ ์˜๊ฒฌ์„ ๋‚ด์—ˆ์ง€๋งŒ, '๋‚ด๊ฐ€ ์ง„ํ–‰ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€.'๋Š” ๊ด€์ ์—์„œ ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

1. Spring์„ ์“ด๋‹ค๋ฉด DAO์—์„œ๋Š” ์•„๋ฌด๋Ÿฐ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์•ˆ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ย DAO๋Š” DBํ˜ธ์ถœ๋งŒ์„ ๋‹ด๋‹นํ•˜๊ณ ย ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋”ฐ๋ผ์„œ ์ฟผ๋ฆฌ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉดย ์กฐ๊ฑด๋ฌธ์ด๋‚˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์•ˆ ๋‘๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ ย DuplicateMemberException์€ Business Exception์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด์„œ ย Service layer๋ถ€ํ„ฐ ๋‚˜ํƒ€๋‚˜๋„๋ก ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

2. Service layer์—์„œย DuplicateKeyException ์„ ์žก์•„์„œย DuplicateMemberException์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์—ฌ๊ธฐ์„œ๋Š” true, false๋กœ ๊ฐ’์„ ๋„˜๊ธฐ์ง€ ์•Š๊ณ , Exception์„ Controller๋กœ ๋„˜๊ธฐ๋Š” ์„ ํƒ์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
ย ํšŒ์›๊ฐ€์ž…์ด ์‹คํŒจํ•˜๋Š” ๋‹ค๋ฅธ ์ด์œ ์˜ Exception(์˜›๋‚ ์— ๋ถˆ๋Ÿ‰ํšŒ์›์ด์˜€๋‹ค๋˜์ง€, ๊ฐ™์€ ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋กœ ๋‹ค๋ฅธ ์•„์ด๋””๊ฐ€ ์žˆ๋‹ค๋˜์ง€)๋„ ์ƒ๊ธธ๋งŒํ•˜๋‹ค๋ฉด 'alternative return value'๋กœ์„œ์˜ ์˜๋ฏธ๋„ ์žˆ์ง€์•Š๋‚˜ํ•˜๋Š” ์ƒ๊ฐ๋„ ๋“ญ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” return type์ด void๋ผ์„œ return type์œผ๋กœ Enum์„ ๋„˜๊ธฐ๋Š” ์„ ํƒ๋„ ๊ฐ€๋Šฅํ•˜๊ฒ ์ง€๋งŒ, ํšŒ์›๊ฐ€์ž…์ด ์‹คํŒจํ•˜๋Š” ์ƒํ™ฉ์ด ์ฒ˜์Œ์— ๋‹ค ์ •์˜๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์šฐ์„ ์€ Exception์œผ๋กœ ๋„˜๊ธฐ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝย DuplicateMemberException์ผ ๋•Œ ๋˜ ๋‹ค๋ฅธ DAO๋‚˜ Service๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋“ฑ์˜ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์ด ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ๋„ Service์˜ catch ์ ˆ์—์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๊ฒƒ๋“ค์€ ๋น„๋‹ˆ์ง€์Šค ๋กœ์ง์œผ๋กœ ๋ด์•ผ๊ฒ ์ฃ .

3. Controller์—์„œ๋Š” ๋˜๋„๋ก ExceptionResolve๊ฐ™์€ ๊ฒƒ์ด๋‚˜ servlet์˜ ์—๋ŸฌํŽ˜์ด์ง€๋กœ ๋„˜๊ธฐ๋Š” ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์—๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ๋ณ„๋„๋กœ java์ฝ”๋“œ์—์„œ UI ๋•Œ๋ฌธ์— ํ•  ์ผ์ด ์žˆ๋‹ค๋ฉด catch์ ˆ์ด ๋ถ€๋“์ดํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ ์ง€๋„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €๋„ controller๋‹จ์— ์กฐ๊ฑด๋ฌธ์ด๋‚˜ try catch๊ฐ€ ๋‚˜์˜ค๋Š” ์ƒํ™ฉ์„ ์ข‹์•„ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. Controller์ฝ”๋“œ์— ๋ถ„๊ธฐ๊ฐ€ ๋งŽ๋‹ค๋ฉด ๋กœ๋“œ์กด์Šจ ์•„์ €์”จ๊ฐ€ ๊ฐ•์กฐํ•œ 'clean and thin web tier' ์Šค๋Ÿฝ์ง€ ์•Š๋‹ค๊ณ  ๋Š๊ปด์ง€๋‹ˆ๊นŒ์š”. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋Ÿฐ ์ฒ˜๋ฆฌ๊ฐ€ ํŽ˜์ด์ง€ ๋„ค๋น„๊ฒŒ์ด์…˜์„ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๋ฉด ์ถฉ๋ถ„ํžˆ controller์˜ ์—ญํ• ๋กœ ๋งก๊ฒจ๋„ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


tier๊ฐ„์˜ ์—ญํ• ๋ถ„๋‹ด ์ธก๋ฉด์—์„œ๋„ ๊ณ ๋ฏผ์ด ๋˜์ง€๋งŒ,ย ย Exception์ด๋‚˜ return type์ด๋ƒ์˜ ๋ฌธ์ œ๋Š” ์–ธ์ œ๋‚˜ ์–ด๋ ต๊ฒŒ ๋Š๊ปด๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด queryForObject ๊ฐ™์ด 1๊ฑด์„ ์กฐํšŒํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ย DB๋ฅผ selectํ–ˆ์„ ๋•Œ ์•„๋ฌด๊ฒƒ๋„ ์กฐํšŒ๋˜์ง€ ์•Š์•˜์„ ๋•Œ iBatis์—์„œ๋Š” null์„ ๋˜์ง€์ง€๋งŒ Spring์—์„œ๋Š”ย EmptyResultDataAccessException์„ ๋˜์ง‘๋‹ˆ๋‹ค. JPA์˜ย EntityNotFoundException๋„ ์œ ์‚ฌํ•œ Exception์ด๊ตฌ์š”.ย ์ž˜ ๋ชจ๋ฅด๋Š” ๋ถ„์•ผ์ด์ง€๋งŒ, MSDN์— ๋‚˜์™€์žˆ๋Š” Win32 API๋Š” ๋Œ€๋ถ€๋ถ„ return type์œผ๋กœ ์„ฑ๊ณต์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ํฌํ•จํ•œ ์ƒํƒœ ๊ฐ์ฒด๋ฅผ ๋˜์ง€๊ณ  ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋“ค์€ ๋ฉ”์†Œ๋“œ ํŒŒ๋ฆฌ๋ฏธํ„ฐ์— ๋‹ด์•„์„œ ๋„˜๊ธฐ๊ฒŒ ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋“ค์€์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์•”ํŠผ ๋Š˜ ๊ณ ๋ฏผ๋˜๋Š” ๋ฌธ์ œ์ง€๋งŒ, ์–ด๋–ค ๋ฐฉ์‹์ด๋“  ๊ฐ™์€ ํ”„๋กœ์ ํŠธ ์•ˆ์—์„œ๋งŒ์ด๋ผ๋„ ์ผ๊ด€์„ฑ ์žˆ๋Š” ๊ทœ์น™์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ๋“ฏํ•ฉ๋‹ˆ๋‹ค.

2012๋…„ 3์›” 26์ผ ์˜ค์ „ 11:05, ์ด์žฌ์ผ <son...@gmail.com>๋‹˜์˜ ๋ง:
Reply all
Reply to author
Forward
0 new messages