Open Session in View Pattern์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์˜๊ฒฌ์€ ์–ด๋– ์‹ ๊ฐ€์š”?

215 views
Skip to first unread message

์ตœ์˜๋ชฉ

unread,
Jul 7, 2011, 1:46:18โ€ฏAM7/7/11
to ks...@googlegroups.com
์ตœ๊ทผ์— ์ œ๊ฐ€ ์กด๊ฒฝํ•˜๋Š” ๋ธ”๋กœ๊ฑฐ ์ค‘์˜ ํ•œ๋ถ„์ด์‹  ์ดํ„ฐ๋„ˆํ‹ฐ๋‹˜์˜ ๊ธ€์„ ์ฝ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Open Session in View Pattern(http://aeternum.egloos.com/2798098)

์•„๋งˆ ๋งŽ์€ ๋ถ„๋“ค์ด ์ด ๊ธ€์„ ๋ณด์…จ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.ย ์—ฌ๊ธฐ์— ๋Œ€ํ•œ ์ œ ์ƒ๊ฐ์„ ๋Œ“๊ธ€๋กœ ๋‚จ๊ธฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜น์‹œ ์ œ๊ฐ€ ์ž˜๋ชป ์ดํ•ดํ•˜๊ฑฐ๋‚˜ ์˜คํ•ดํ•˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์€ ์—†๋Š”์ง€ ๋งŽ์ด ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. (๋˜๋Š” ์—…๊ณ„ ์„ ๋ฐฐ๋‹˜์— ๋Œ€ํ•œ ๊ฒฐ๋ก€๋Š” ์•„๋‹๋Ÿฐ์ง€...)

์—ฌ๊ธฐ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์˜๊ฒฌ์€ ์–ด๋– ์‹ ์ง€์š”?

์•„๋ž˜๋Š” ์ œ ๋Œ“๊ธ€์˜ ์ „๋ฌธ์ž…๋‹ˆ๋‹ค.

----------------------------------------------------------------------------------------------------------------------------------------------

์ข‹์€ ๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ^^ ํ•ญ์ƒ ์ดํ„ฐ๋„ˆํ‹ฐ๋‹˜๊ป˜ ๋งŽ์„ ๊ฒƒ์„ ๋ฐฐ์›Œ๊ฐ€๊ณ  ์žˆ๋„ค์š”^^

์ œ๊ฐ€ ์•„์ง ๊ฒฝ๋ ฅ๋„ ์งง๊ณ  ๊ฒฝํ—˜๋„ ๋ฏธํกํ•ด์„œ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ์ง€ ์•Š๋‚˜ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ œ๊ฐ€ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์„ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์˜ Entity๋ฅผ DDD์˜ Entity๋กœ ๋ฐ”๋ผ๋ณธ๋‹ค๋ฉด ๋ง์”€ํ•˜์‹  Open Session in View Pattern์„ ํ™œ์šฉํ•˜๋ฉด ์ข‹์€ ํ•ด๋ฒ•์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.ย 
ํ•˜์ง€๋งŒ ์ €๋Š” ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์˜ Entity๋ฅผ DDD์˜ Entity๋กœ ํ•ด์„ํ•˜๋ฉด ๋ฌด๋ฆฌ๊ฐ€ ์žˆ์ง€ ์•Š๋‚˜ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.ย 
๋ง์”€ํ•˜์‹ ๋Œ€๋กœ ๋ ˆ์ด์–ด๋ฅผ ๊ตฌ๋ถ„ํ•  ๋•Œ ๋„๋ฉ”์ธ ๋กœ์ง๊ณผ ์˜์†์„ฑ ๋กœ์ง์ด ๋ถ„๋ฆฌ๋˜์–ด์•ผ ๋œ๋‹ค๊ณ  ํ•˜์…จ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์˜ Entity์˜ ๊ฒฝ์šฐ POJO๋ฅผ ํ‘œ๋ฐฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์‹ค์€ ๋„๋ฉ”์ธ๊ณผ ์˜์†์„ฑ์ด ํ˜ผํ•ฉ๋œ ํ˜•ํƒœ์˜ Entity๋ผ๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.ย 
๊ทธ ์˜ˆ๋กœ Entity์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์• ๋…ธํ…Œ์ด์…˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜์กด์ ์ธ ๋‚ด์šฉ๋“ค์ด ๊ธฐ์ˆ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ๋˜ํ•œ @Transient (JPA 1.0 ์ŠคํŽ™)์„ ์ œ๊ณตํ•˜๊ณ  ํ™œ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋„๋ฉ”์ธ์˜ ์›๋ž˜ ๋ชฉ์ ์ธ ํ–‰์œ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค๊ธฐ๋ณด๋‹ค๋Š” (ํŠนํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๋กœ ๋” ๋งŽ์ด ์“ฐ์ธ๋‹ค๋Š” ๊ฒƒ์ด์ฃ .

๋˜ํ•œ ๋ ˆ์ด์–ด์˜ ๋ชฉ์ ์— ๋”ฐ๋ผ ์˜ˆ์ œ๋กœ ์„ค๋ช…ํ•˜์‹  AlbumRepository์˜ ๊ตฌํ˜„์ฒด์ธ HibernateAlbumRepository๋ฅผ IbatisAlbumRepository๋กœ ๋ฐ”๊พธ๋”๋ผ๋„ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ ๊ตฌ์กฐ์—์„œ๋Š” IbatisAlbumRepository๋กœ ๋ฐ”๊พธ์—ˆ์„ ๊ฒฝ์šฐ ๊ณผ์—ฐ Open Session in View Pattern์„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š๋ƒ?๋ผ๋Š” ์˜๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์ œ๊ฐ€ ๋งํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ•ต์‹ฌ์€ ๊ณผ์—ฐ ํ™”๋ฉด(view)์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋„๋ฉ”์ธ ์ž์ฒด ๋˜๋Š” ๋„๋ฉ”์ธ์˜ getter๋ฉ”์„œ๋“œ๋ฅผ ๋…ธ์ถœ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์˜ณ์€ ์ผ์ด๋ƒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์‹ค๋ฌด์—์„œ ์ผ์„ ํ•˜๋‹ค๋ณด๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์‚ฌ์œ (ํŠนํžˆ ์ผ์ •)๋•Œ๋ฌธ์— ๋˜๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ์ •๋ณด ๊ฐ์ฒด์˜ ์ƒ์„ฑ์„ ํšŒํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋„๋ฉ”์ธ ์ž์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ต‰์žฅํžˆ ๋งŽ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์˜๋ฏธ๋ก ์ ์œผ๋กœ๋งŒ ์ ‘๊ทผ์„ ํ–ˆ์„ ๊ฒฝ์šฐ ํ•ด๋‹น ๋„๋ฉ”์ธ์˜ ์ •๋ณด๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ interface๋ฅผ ํ†ตํ•ด์„œ ์ œ๊ณต์„ ํ•˜๊ณ , ๊ทธ interface์˜ ๊ตฌํ˜„์ฒด๋ฅผ ๋ทฐ์— ๋…ธ์ถœ์‹œ์ผœ์•ผ ํ•˜์ง€ ์•Š๋‚˜ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ย Allen Holub์˜ ์‹ค์ „ ์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ๋””์ž์ธํŒจํ„ด์˜ ๋‚ด์šฉ๊ณผ ๋™์ผ ์ธ๋ฌผ์˜ Why getter and setter methods are evil
(http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html?page=1)์˜ ์˜ํ–ฅ์„ ๋งŽ์ด ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

Application ๋ ˆ์ด์–ด(๋˜๋Š” Service ๋ ˆ์ด์–ด)์—์„œ ๋„๋ฉ”์ธ์„ ๋ฆฌํ„ดํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํ™”๋ฉด(view)์—์„œ ์–ด๋–ค ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ง€ ๋ชจ๋ฅธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.ย 
์ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๋ฉด ํ™”๋ฉด(view)์—์„œ ์š”๊ตฌํ•˜๋Š” ์ •๋ณด๊ฐ€ ๋ฌด์—‡์ธ์ง€๋„ ๋ชจ๋ฅด๋Š”๋ฐ ์•„๋ฌด๊ฑฐ๋‚˜ ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋„์ถœ์ด๋ผ๋Š” ๋ช…๋ชฉํ•˜์— ๋„๋ฉ”์ธ์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋˜๊ณ , ์ด์— ๋”ฐ๋ผ lazy loading์— ์˜ํ•œ ํ™”๋ฉด(view)์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ๊ฐ€ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€๋ผ๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.
1. ๋„๋ฉ”์ธ์„ ๋ฆฌํ„ดํ•˜๋Š” private ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ , ํ•ด๋‹น view์—์„œ ์š”๊ตฌํ•˜๋Š” ์ •๋ณด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋…ธ์ถœ์‹œํ‚จ๋‹ค.
2. Hibernate.initialize๋กœ ๋ชจ๋‘ ์ดˆ๊ธฐํ™”ํ•ด์„œ ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค. (์„ฑ๋Šฅ๋ฌธ์ œ ๋ฐœ์ƒ) : ์ด๋Š” ๋ง์”€ํ•˜์‹  Open Session in View Pattern์„ ์ ์šฉํ•˜๋”๋ผ๋„ ajaxํ†ต์‹ (json)์„ ํ†ตํ•ด view์—์„œ ํ˜ธ์ถœํ•˜๋ฉด
๊ฒฐ๊ตญ 2๋ฒˆ๊ณผ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ •๋ณด๋ฅผ ์“ฐ์ง€ ์•Š์•„๋„ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

์กฐ๊ธˆ ๋…ผ์™ธ์ด๊ธด ํ•ฉ๋‹ˆ๋‹ค๋งŒ ์ •์„์ ์ธ TDD๋กœ ๊ฐœ๋ฐœ์„ ํ•œ๋‹ค๋ฉด ๋„๋ฉ”์ธ์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ TDD๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜๋„ ์—†๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์‹ค๋ฌด์—์„œ ์ด๋ก ์ ์ธ ๋‚ด์šฉ์„ ์™„๋ฒฝํžˆ ์ ‘๋ชฉ์‹œํ‚ค๋Š” ์ผ ๋˜ํ•œ ์–ด๋ ค์šด ์ผ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ดํ„ฐ๋„ˆํ‹ฐ๋‹˜๊ป˜์„œ ์˜ฌ๋ ค์ฃผ์‹  Open Session in View Pattern์€ ๋ง์”€ํ•˜์‹ ๋Œ€๋กœ ๋‹จ์ผ JVM์— ๋„๋ฉ”์ธ ๋ชจ๋ธ ํŒจํ„ด์— ๋”ฐ๋ผ ๊ฐœ๋ฐœํ•  ๋•Œ ์•„์ฃผ ์ข‹์€ ํŒจํ„ด์ž„์€ ํ‹€๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ๊ธ€์†œ์”จ๋„ ์—†์–ด์„œ ๋‘์„œ์—†๊ณ , ํ‘œํ˜„์„ ์ž˜ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ถ€๋ถ„์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์  ์ฃ„์†กํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.ย 
ํ˜น์‹œ๋ผ๋„ ์ œ๊ฐ€ ์ž˜๋ชป ์ดํ•ดํ•˜๊ฑฐ๋‚˜ ์˜คํ•ดํ•˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์—…๊ณ„ ์„ ๋ฐฐ๋‹˜์˜ ๋”ฐ๋“ฏํ•œ ๋งˆ์Œ์œผ๋กœ ์กฐ์–ธ์„ ํ•ด์ฃผ์‹œ๋ฉด ์ƒˆ๊ฒจ๋“ฃ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ^^
(์ œ๊ฐ€ ๋…ผ์ (context)์„ ์œ ์ง€ํ•˜๋Š” ๋Šฅ๋ ฅ์ด ๋งŽ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ใ… ใ… )

Sungchul Park

unread,
Jul 7, 2011, 4:29:21โ€ฏAM7/7/11
to ks...@googlegroups.com
ใ…Žใ…Ž
์žฅ๋ฌธ์˜ ๊ธ€์„ ๋‚จ๊ธฐ์…จ๋„ค์š”.

์ €๋„ ๋ช‡๊ฐ€์ง€ ๊ฐ์ƒ๋ฌธ์„ ๋ธ”๋กœ๊ทธ์— ์จ ๋ณผ๊นŒ ํ–ˆ๋Š”๋ฐ ์ œ ์ƒ๊ฐ๊ณผ ๊ด€๋ จ๋œ ๋ถ€๋ถ„๋„ ์–ธ๊ธ‰ํ•˜์…จ์œผ๋‹ˆ ์—ฌ๊ธฐ์„œ ํ’€์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์งง๊ฒŒ์š”).

๋จผ์ € ์ €๋Š” ์กฐ์˜ํ˜ธ๋‹˜์ด ์“ฐ์‹  ๊ธ€์—๋Š” ์ƒ๋žต๋œ ๋ฐฐ๊ฒฝ ๋งฅ๋ฝ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  1. Domain์„ View๊นŒ์ง€ ๋…ธ์ถœํ•œ๋‹ค.
  2. Annotation์ด ๋งˆํฌ๋œ ๊ฐ์ฒด๋„ POJO๋‹ค.
๋งŒ์•ฝ ์ด ๋‘ ๊ฐ€์ง€๊นŒ์ง€ ๋‹ค๋ฃจ์—ˆ๋‹ค๋ฉด, ๊ผผ๊ผผํ•˜์‹  ์„ฑ๊ฒฉ์—, 40์—ฌ ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹ˆ๋ผ 200 ํŽ˜์ด์ง€์งœ๋ฆฌ ๊ธ€์„ ์“ฐ์…จ์„ ๊ฒƒ ๊ฐ™๋„ค์š”. ์‚ฌ์‹ค ์กฐ์˜ํ˜ธ๋‹˜์˜ ๊ธ€์ด ์ด ๋‘ ๊ฐ€์ง€ ๋ถ€๋ถ„์—์„œ ๋ชจํ˜ธํ•œ ๋ฉด์ด ์žˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๊ธ€์˜ ํ•ต์‹ฌ์ธ Open Session in View์˜ ์‚ฌ์šฉ ์—ฌ๋ถ€์—๋งŒ ๋…ผ์˜๋ฅผ ์ง‘์ค‘ํ•˜๋Š” ๊ฒŒ ์ƒ์‚ฐ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ ์งˆ๋ฌธํ•˜์‹  ๋‚ด์šฉ ์ค‘์— ์ด ๋‘ ๊ฐ€์ง€๋Š” ๊ธ€์˜ ๊ด€์‹ฌ ๋ฐ–์˜ ๋ฌธ์ œ๋กœ ์ ‘์–ด ๋‘์‹œ๋Š” ๊ฒŒ ์ข‹์„ ๋“ฏ ์‹ถ์Šต๋‹ˆ๋‹ค. 2๋ฒˆ ์‚ฌํ•ญ์˜ ๊ฒฝ์šฐ, ๋งŒ์•ฝ POJO ์›๋ฆฌ ์ฃผ์˜์ž์˜ ์ž…์žฅ์„ ๊ณ ์ˆ˜ํ•˜์‹œ๊ฒ ๋‹ค๋ฉด Annotation ๋Œ€์‹  XML๋กœ ORM ์„ค์ •ํ–ˆ๋‹ค๊ณ  ์น˜๊ณ  ๊ธ€์„ ๋ด๋„ ๋˜๊ฒ ์ฃ .


๋˜ํ•œ ๋ ˆ์ด์–ด์˜ ๋ชฉ์ ์— ๋”ฐ๋ผ ์˜ˆ์ œ๋กœ ์„ค๋ช…ํ•˜์‹  AlbumRepository์˜ ๊ตฌํ˜„์ฒด์ธ HibernateAlbumRepository๋ฅผ IbatisAlbumRepository๋กœ ๋ฐ”๊พธ๋”๋ผ๋„ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ ๊ตฌ์กฐ์—์„œ๋Š” IbatisAlbumRepository๋กœ ๋ฐ”๊พธ์—ˆ์„ ๊ฒฝ์šฐ ๊ณผ์—ฐ Open Session in View Pattern์„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š๋ƒ?๋ผ๋Š” ์˜๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค.
์ €๋Š” ์กฐ์˜ํ˜ธ๋‹˜์˜ ๊ธ€์„ ์ฝ์œผ๋ฉด์„œ Open Session In View ์„ค์ •์ด ๊ณผ์—ฐ Client ๊ณ„์ธต์— ์†ํ•˜๋Š”์ง€ ์•„๋‹Œ์ง€ ์ƒ๊ฐํ•ด๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ์˜ํ˜ธ๋‹˜์€ ํด๋ผ์ด์–ธํŠธ ๊ณ„์ธต์— ์†ํ•œ๋‹ค๊ณ  ๋ณด์…จ๊ณ , ๊ทธ๋ ‡์ง€๋งŒ ๋‹ค์ค‘ ๊ณ„์ธต ์•„ํ‚คํƒ์ฒ˜ ์›์น™์— ์œ„๋ฐฐ ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•˜์…จ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ €๋Š” ์˜คํžˆ๋ ค ์ด ๋ถ€๋ถ„์ด ํด๋ผ์ด์–ธํŠธ ๊ณ„์ธต์— ์†ํ•œ๋‹ค๊ณ  ๋ด์•ผํ•˜๋‚˜ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์šด์˜ ํ™˜๊ฒฝ์œผ๋กœ ๋ณด๋ฉด ์–ด๋–จ๊นŒ ์‹ถ์–ด์š”. ๋‹ค๋งŒ ์ œ ์ง€์‹์ด ์ž…์žฅ์„ ๋ถ„๋ช…ํžˆ ํ•˜๊ธฐ์— ๋ถ€์กฑํ•˜๋„ค์š”.

๋งŒ์•ฝ, ์•„์ง ์ •๋ฆฝ ์•ˆ ๋œ ์ œ ์ž…์žฅ์ด ์–ด๋Š์ •๋„ ํƒ€๋‹นํ•˜๋‹ค๋ฉด, ์ตœ์˜๋ชฉ๋‹˜์ด ์ œ๊ธฐํ•˜์‹  ๊ฒƒ์ฒ˜๋Ÿผ ์˜์†์„ฑ ๊ธฐ์ˆ ์„ ibatis๋กœ ๋ฐ”๊พธ์—ˆ์„ ๋•Œ (ibatis๋„ lazy loading์ด ๋˜๋‹ˆ) Open Session in View๋ฅผ ibatis ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜, Open session in view ์„ค์ •์„ ์ œ๊ฑฐํ•ด๋„ ํด๋ผ์ด์–ธํŠธ ๊ณ„์ธต์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์ง€ ์•Š์„์ง€์š”.

๊ฒฐ๊ตญ ์ œ๊ฐ€ ๋งํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ•ต์‹ฌ์€ ๊ณผ์—ฐ ํ™”๋ฉด(view)์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋„๋ฉ”์ธ ์ž์ฒด ๋˜๋Š” ๋„๋ฉ”์ธ์˜ getter๋ฉ”์„œ๋“œ๋ฅผ ๋…ธ์ถœ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์˜ณ์€ ์ผ์ด๋ƒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์‹ค๋ฌด์—์„œ ์ผ์„ ํ•˜๋‹ค๋ณด๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์‚ฌ์œ (ํŠนํžˆ ์ผ์ •)๋•Œ๋ฌธ์— ๋˜๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ์ •๋ณด ๊ฐ์ฒด์˜ ์ƒ์„ฑ์„ ํšŒํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋„๋ฉ”์ธ ์ž์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ต‰์žฅํžˆ ๋งŽ์Šต๋‹ˆ๋‹ค.
์ด๊ฑด ์•ž์—์„œ ๋ง์”€ ๋“œ๋ฆฐ ๊ฒƒ ์ฒ˜๋Ÿผ ์ด ๊ธ€์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๋” ๊ด‘๋ฒ”์œ„ํ•œ ๋…ผ์ ์ด๋ฏ€๋กœ ๋”ฐ๋กœ ํ† ๋ก ํ•ด์•ผ ํ•  ๋ฌธ์ œ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ ๊ณ„์ธต์„ ํด๋ผ์ด์–ธํŠธ์—๊นŒ์ง€ ๊ณต๊ฐœํ•˜๋Š๋ƒ DTO๋ฅผ ์“ฐ๋Š๋ƒ๋Š” ๋…ผ์Ÿ์€ ์•„์ง๋„ ๊ณ„์† ๋˜๋‹ˆ๊นŒ์š”. ์ œ ์ƒ๊ฐ์—” ๋„๋ฉ”์ธ ๊ณ„์ธต์„ ๊ณต๊ฐœํ•ด๋„ ๋œ๋‹ค๋Š” ์ชฝ์œผ๋กœ ๊ธฐ์šฐ๋Š” ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์˜๋ฏธ๋ก ์ ์œผ๋กœ๋งŒ ์ ‘๊ทผ์„ ํ–ˆ์„ ๊ฒฝ์šฐ ํ•ด๋‹น ๋„๋ฉ”์ธ์˜ ์ •๋ณด๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ interface๋ฅผ ํ†ตํ•ด์„œ ์ œ๊ณต์„ ํ•˜๊ณ , ๊ทธ interface์˜ ๊ตฌํ˜„์ฒด๋ฅผ ๋ทฐ์— ๋…ธ์ถœ์‹œ์ผœ์•ผ ํ•˜์ง€ ์•Š๋‚˜ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ย Allen Holub์˜ ์‹ค์ „ ์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ๋””์ž์ธํŒจํ„ด์˜ ๋‚ด์šฉ๊ณผ ๋™์ผ ์ธ๋ฌผ์˜ Why getter and setter methods are evil
(http://www.javaworld.com /javaworld/jw-09-2003/jw-0905-toolbox.html?page=1)์˜ ์˜ํ–ฅ์„ ๋งŽ์ด ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.
์ €๋„ ๋„๋ฉ”์ธ ๊ณ„์ธต์„ ๊ณต๊ฐœํ•˜์ž๋Š” ์ชฝ๊ณผ DTO๋ฅผ ์“ฐ์ž๋Š” ์ชฝ์˜ ์ ˆ์ถฉ์•ˆ ์ค‘ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Application ๋ ˆ์ด์–ด(๋˜๋Š” Service ๋ ˆ์ด์–ด)์—์„œ ๋„๋ฉ”์ธ์„ ๋ฆฌํ„ดํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํ™”๋ฉด(view)์—์„œ ์–ด๋–ค ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ง€ ๋ชจ๋ฅธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.ย 
์ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๋ฉด ํ™”๋ฉด(view)์—์„œ ์š”๊ตฌํ•˜๋Š” ์ •๋ณด๊ฐ€ ๋ฌด์—‡์ธ์ง€๋„ ๋ชจ๋ฅด๋Š”๋ฐ ์•„๋ฌด๊ฑฐ๋‚˜ ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋„์ถœ์ด๋ผ๋Š” ๋ช…๋ชฉํ•˜์— ๋„๋ฉ”์ธ์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋˜๊ณ , ์ด์— ๋”ฐ๋ผ lazy loading์— ์˜ํ•œ ํ™”๋ฉด(view)์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ๊ฐ€ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค.
๋„๋ฉ”์ธ์ด ๊ทธ๋ž˜ํ”„๋กœ ๋ชจ๋‘ ์—ฐ๊ฒฐ๋ผ ์žˆ๋‹ค๋ฉด ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์ฃ . ์„œ๋น„์Šค์—์„œ๋Š” BbsData ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ๋Š”๋ฐ View์—์„œ ์ด ๊ฐ์ฒด์™€ ์—ฐ๊ด€ ๊ด€๊ณ„์ธ User๋ฅผ ๊ฑฐ์ณ Permission ๋„๋ฉ”์ธ๊นŒ์ง€ ํƒ€๊ณ  ๊ฐ„๋‹ค๋ฉด...ใ„ทใ„ทใ„ท ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ์ž์™€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ถ„๋ฆฌ๋œ ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ์šฐ๋ คํ• ๋งŒํ•œ ์ƒํ™ฉ์ด๊ณ ์š”. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์€ ์„œ๋ฒ„ ๋กœ์ง์„ ๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ์ด ํด๋ผ์ด์–ธํŠธ๋„ ๊ฐœ๋ฐœํ•˜๋‹ˆ ๋ฏธ๋ฆฌ ์•ˆํ‹ฐํŒจํ„ด์œผ๋กœ ๋ฏธ๋ฆฌ ๊ณต์ง€ํ•˜๊ณ  ์ฃผ์˜ํ•˜๋„๋ก ํ•œ๋‹ค๋ฉด ํ•ด๊ฒฐ ๋œ๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€๋ผ๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.
1. ๋„๋ฉ”์ธ์„ ๋ฆฌํ„ดํ•˜๋Š” private ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ , ํ•ด๋‹น view์—์„œ ์š”๊ตฌํ•˜๋Š” ์ •๋ณด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋…ธ์ถœ์‹œํ‚จ๋‹ค.
2. Hibernate.initialize๋กœ ๋ชจ๋‘ ์ดˆ๊ธฐํ™”ํ•ด์„œ ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค. (์„ฑ๋Šฅ๋ฌธ์ œ ๋ฐœ์ƒ) : ์ด๋Š” ๋ง์”€ํ•˜์‹  Open Session in View Pattern์„ ์ ์šฉํ•˜๋”๋ผ๋„ ajaxํ†ต์‹ (json)์„ ํ†ตํ•ด view์—์„œ ํ˜ธ์ถœํ•˜๋ฉด
๊ฒฐ๊ตญ 2๋ฒˆ๊ณผ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ •๋ณด๋ฅผ ์“ฐ์ง€ ์•Š์•„๋„ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.
์œ„์—์„œ ๋ง์”€ํ•˜์‹  ์ธํ„ฐํŽ˜์ด์Šค ์„œ๋น„์Šค๊ฐ€ ๋„๋ฉ”์ธ ๊ฐ์ฒด ๋Œ€์‹  ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•ด๋„ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์„ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹ค.

์กฐ๊ธˆ ๋…ผ์™ธ์ด๊ธด ํ•ฉ๋‹ˆ๋‹ค๋งŒ ์ •์„์ ์ธ TDD๋กœ ๊ฐœ๋ฐœ์„ ํ•œ๋‹ค๋ฉด ๋„๋ฉ”์ธ์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ TDD๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜๋„ ์—†๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์‹ค๋ฌด์—์„œ ์ด๋ก ์ ์ธ ๋‚ด์šฉ์„ ์™„๋ฒฝํžˆ ์ ‘๋ชฉ์‹œํ‚ค๋Š” ์ผ ๋˜ํ•œ ์–ด๋ ค์šด ์ผ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ถ€๋ถ„์€ ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ ๋ฉ๋‹ˆ๋‹ค. TDD๋ฅผ ํ•˜๋ฉด ์™œ ๋„๋ฉ”์ธ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ผ์ด ์ƒ๊ธฐ์ง€ ์•Š๋‹ค๊ณ  ๋ณด์‹œ๋‚˜์š”? ์ €ํฌ ํ”„๋กœ์ ํŠธ๋„ TDD๋ฅผ ํ•˜์ง€๋งŒ ๋„๋ฉ”์ธ์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ์š”.

์ตœ์˜๋ชฉ

unread,
Jul 7, 2011, 5:51:38โ€ฏAM7/7/11
to ks...@googlegroups.com
๋„ค. ์‚ฌ์‹ค ์ œ ์งˆ๋ฌธ์ด ์›๋ž˜์˜ ๊ธ€์˜ ์š”์ง€์—์„œ ๋งŽ์ด ๋ฒ—์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ ๋Œ“๊ธ€์—์„œ๋„ ๋งˆ์ง€๋ง‰์— context๋ฅผ ์–ธ๊ธ‰ํ•œ ์ด์œ ๊ฐ€
๊ถ๊ธˆํ•œ๊ฒŒ ์žˆ์–ด์„œ ์งˆ๋ฌธ์€ ํ•˜๊ณ  ์‹ถ์€๋ฐ ๊ธ€์˜ ์š”์ง€์—์„œ๋Š” ๋ฒ—์–ด๋‚˜๊ณ ... ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋‚˜... ๋ผ๊ณ  ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๊ทธ๋ƒฅ ๊ฒฐ๋ก€๋ฅผ ๋ฌด๋ฆ…์“ฐ๊ณ ย 
๋ฌผ์–ด๋ณด์ž๊ณ  ์ƒ๊ฐํ•ด์„œ ๊ธ€์„ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค. ใ… ใ… 

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์— "์กฐ๊ธˆ ๋…ผ์™ธ์ด๊ธด ํ•ฉ๋‹ˆ๋‹ค๋งŒ ์ •์„์ ์ธ TDD๋กœ ๊ฐœ๋ฐœ์„ ํ•œ๋‹ค๋ฉด ๋„๋ฉ”์ธ์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค."๋ผ๊ณ  ํ•œ ๋ถ€๋ถ„์€ ์ œ๊ฐ€ ์ž˜๋ชป ์ƒ๊ฐํ–ˆ๋„ค์š”.

ํ™”๋ฉด๋ถ€ํ„ฐ(jsp ๋“ฑ) TDD๋กœ ํ•œ๋‹ค ํ•˜๋”๋ผ๋„ ํ™”๋ฉด์—์„œ ๋ณด์—ฌ์ฃผ๋Š” ๋ถ€๋ถ„์ด ๋„๋ฉ”์ธ๊ตฌ์กฐ์™€ ๊ฑฐ์˜ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ(์˜ˆ๋ฅผ ๋“ค์ž๋ฉด ํšŒ์›์ •๋ณด๊ฐ™์€...)์—๋Š” ๋„๋ฉ”์ธ์„ ๋ฐ˜ํ™˜ํ•˜๊ฒ ๊ตฐ์š” ^^;ย 

์™œ ๊ธ€ ์“ธ๋•Œ๋Š” ์ด ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐ์„ ๋ชปํ–ˆ์„๊นŒ์š”? ใ… ใ… 

์•ž์œผ๋กœ๋Š” ์ข€ ๋” ์‹ ์ค‘ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ๊ธ€์„ ์จ์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค. ใ… ใ…  (30๋Œ€์ธ๋ฐ๋„ ์•„์ง 20๋Œ€์ฒ˜๋Ÿผ ํ–‰๋™ํ•˜๊ณ  ์žˆ๋„ค์š” ใ… ใ… )


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

Toby Lee

unread,
Jul 7, 2011, 7:42:32โ€ฏAM7/7/11
to ks...@googlegroups.com
ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์˜ Entity๋ฅผ DDD์˜ Entity๋กœ ํ•ด์„ํ•˜๋ฉด ๋ฌด๋ฆฌ๊ฐ€ ์žˆ์ง€ ์•Š๋‚˜ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.ย 
ย 
ํ•˜์ง€๋งŒ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์˜ Entity์˜ ๊ฒฝ์šฐ POJO๋ฅผ ํ‘œ๋ฐฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์‹ค์€ ๋„๋ฉ”์ธ๊ณผ ์˜์†์„ฑ์ด ํ˜ผํ•ฉ๋œ ํ˜•ํƒœ์˜ Entity๋ผ๊ณ  ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.ย 

๊ทธ ์˜ˆ๋กœ Entity์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์• ๋…ธํ…Œ์ด์…˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜์กด์ ์ธ ๋‚ด์šฉ๋“ค์ด ๊ธฐ์ˆ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ๋˜ํ•œ @Transient (JPA 1.0 ์ŠคํŽ™)์„ ์ œ๊ณตํ•˜๊ณ  ํ™œ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋„๋ฉ”์ธ์˜ ์›๋ž˜ ๋ชฉ์ ์ธ ํ–‰์œ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค๊ธฐ๋ณด๋‹ค๋Š” (ํŠนํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๋กœ ๋” ๋งŽ์ด ์“ฐ์ธ๋‹ค๋Š” ๊ฒƒ์ด์ฃ .

ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋‚˜ JPA์ฒ˜๋Ÿผ ์ฝ”๋“œ๋‚ด ์• ๋…ธํ…Œ์ด์…˜๊ณผ XML์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ORM์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๊ธฐ๋ณธ ์›์น™์€ ์—”ํ‹ฐํ‹ฐ์˜ ๊ด€๊ณ„๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” ์ •๋ณด๋‚˜ ์—”ํ‹ฐํ‹ฐ์˜ ๊ณ ์œ ํ•œ ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •๋ณด๋Š” ์• ๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ , ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ์˜์†์„ฑ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด(์ปฌ๋Ÿผ ๋‚ด์šฉ, ํ…Œ์ด๋ธ” ์ •๋ณด, ์ธ๋ฑ์Šค, ํ‚ค ์ƒ์„ฑ๋ฐฉ๋ฒ• ๋“ฑ)์€ XML๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.ย 

ํŽธ์˜๋ฅผ ์œ„ํ•ด์„œ ์˜์† ํ™˜๊ฒฝ์— ์ข…์†์ ์ธ ์ •๋ณด๋ฅผ ์• ๋…ธํ…Œ์ด์…˜์— ๋‹ด๊ธฐ๋„ ํ•˜๋‚˜, ์ด๋Š” ๊ณ ์†๊ฐœ๋ฐœ์ด๋‚˜ ํ”„๋กœํ† ํƒ€์ดํ•‘์˜ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์น™์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์˜ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋„๋ฉ”์ธ๊ณผ ์˜์†์„ฑ์ด ํ˜ผํ•ฉ๋œ ํ˜•ํƒœ๋ผ๊ณ  ๋‹จ์ •ํ•  ์ˆ˜๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ตœ์˜๋ชฉ

unread,
Jul 7, 2011, 7:56:42โ€ฏAM7/7/11
to ks...@googlegroups.com
๋„ค. ๋ง์”€ํ•˜์‹  ๋‚ด์šฉ์„ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์ œ ์ƒ๊ฐ์ด ๋งŽ์ด ์งง์•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค. ์•Œ๋ ค์ฃผ์…”์„œ ๋„ˆ๋ฌด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ^^
(์‚ฌ์‹ค ์Šคํ”„๋ง3 ์ฑ…์€ ์ง€๊ธˆ ์ด ๊ธ€์ด ๋ณด์ด๋Š” ๋ชจ๋‹ˆํ„ฐ ๋ฐ”๋กœ ์˜†์— ์žˆ๋„ค์š”. ํ•ญ์ƒ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ^^)

๋‘ ๋ถ„ ๋ชจ๋‘ ์—…๊ณ„ ์„ ๋ฐฐ๋‹˜์ด์‹ ๋ฐ ๋ชป๋‚œ ์—…๊ณ„ ํ›„๋ฐฐ๋ฅผ ์œ„ํ•ด์„œ ์กฐ์–ธ์„ ํ•ด์ฃผ์…”์„œ ๊ณ ๋งˆ์šธ๋”ฐ๋ฆ„์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•˜๋ฃจ ๋นจ๋ฆฌ ์ƒ๊ฐ์„ ์„ฑ์ˆ™์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ž์„ธ๋ฅผ ๊ฐ€์ ธ์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค. ใ… ใ… 

ps. ์ด๋ฒˆ ์„ธ๋ฏธ๋‚˜ ๋•Œ ๊ฐœ์ธ ์‚ฌ์ •์œผ๋กœ ์ฐธ์„ํ•˜์ง€ ๋ชปํ•ด์„œ ๋ฌด์ฒ™ ์•„์‰ฝ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์— ๊ธฐํšŒ๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด ๊ณ ๊ฒฌ ๋ถ€ํƒ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ย ^^ (๋ธ”๋กœ๊ทธ ๊ธ€ ์ž˜ ์ฝ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.)


2011๋…„ 7์›” 7์ผ ์˜คํ›„ 8:42, Toby Lee <toby...@gmail.com>๋‹˜์˜ ๋ง:

--

๋ฐ•์„ฑ์ฒ 

unread,
Jul 7, 2011, 10:46:03โ€ฏAM7/7/11
to ks...@googlegroups.com

(์‚ฌ์‹ค ์Šคํ”„๋ง3 ์ฑ…์€ ์ง€๊ธˆ ์ด ๊ธ€์ด ๋ณด์ด๋Š” ๋ชจ๋‹ˆํ„ฐ ๋ฐ”๋กœ ์˜†์— ์žˆ๋„ค์š”. ํ•ญ์ƒ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ^^)

๋ชจ๋‹ˆํ„ฐ ๋ฐ›์นจ! (ํฝ!)

๋‘ ๋ถ„ ๋ชจ๋‘ ์—…๊ณ„ ์„ ๋ฐฐ๋‹˜์ด์‹ ๋ฐ ๋ชป๋‚œ ์—…๊ณ„ ํ›„๋ฐฐ๋ฅผ ์œ„ํ•ด์„œ ์กฐ์–ธ์„ ํ•ด์ฃผ์…”์„œ ๊ณ ๋งˆ์šธ๋”ฐ๋ฆ„์ž…๋‹ˆ๋‹ค.

๊ณผํ•œ ๊ฒธ์†์ด์‹ญ๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํžˆ ํ† ๋ก ํ•  ๋งŒํ•œ ย ์ฃผ์ œ์˜€๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ž„๋ณ‘์ธ(ํฌ๋ฐ๋ธŒ)

unread,
Jul 7, 2011, 10:01:04โ€ฏPM7/7/11
to Korea Spring User Group
> ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋‚˜ JPA์ฒ˜๋Ÿผ ์ฝ”๋“œ๋‚ด ์• ๋…ธํ…Œ์ด์…˜๊ณผ XML์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ORM์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๊ธฐ๋ณธ ์›์น™์€ ์—”ํ‹ฐํ‹ฐ์˜ ๊ด€๊ณ„๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” ์ •๋ณด๋‚˜
> ์—”ํ‹ฐํ‹ฐ์˜ ๊ณ ์œ ํ•œ ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •๋ณด๋Š” ์• ๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ , ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ์˜์†์„ฑ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด(์ปฌ๋Ÿผ ๋‚ด์šฉ, ํ…Œ์ด๋ธ” ์ •๋ณด,
> ์ธ๋ฑ์Šค, ํ‚ค ์ƒ์„ฑ๋ฐฉ๋ฒ• ๋“ฑ)์€ XML๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Œ ์ฒ˜์Œ ์งˆ๋ฌธ๊ณผ ๋‹ค๋ฅธ ์ฃผ์ œ์ด์ง€๋งŒ ๊ถ๊ธˆํ•˜์—ฌ ์งˆ๋ฌธ์„ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
์œ„์˜ ๋‚ด์šฉ์„ ๋ณด๋ฉด ์• ๋…ธํ…Œ์ด์…˜๊ณผ XML์„ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ๊ฐ™์€
์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค.
์ง€๊ธˆ๊นŒ์ง€ JPA๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์• ๋…ธํ…Œ์ด์…˜๋งŒ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋‹ˆ
๋กœ์ง์ด๋‚˜ ์—”ํ‹ฐํ‹ฐ์†์„ฑ์€ ๋ณ€ํ™”๊ฐ€ ์—†์–ด๋„ ์ปฌ๋Ÿผ์˜ ๋ณ€ํ™”๋•Œ๋ฌธ์— ์ปดํฌ๋„ŒํŠธ๋ฅผ
์žฌ๋ฐฐํฌํ•ด์™”์Šต๋‹ˆ๋‹ค.
ํ† ๋น„๋‹˜์ด ๋ง์”€ํ•˜์‹  ๋ฐฉ๋ฒ•์„ ์ง€๊ธˆ๊ป ์ƒ๊ฐํ•ด๋ณด์ง€๋„ ๋ชปํ•˜์˜€๊ธฐ์—
๋‘๊ฐ€์ง€๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ํ˜„์žฌ๋Š” ๋ชจ๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋งŽ์€ ์˜ˆ์ œ์™€ ๋ฌธ์„œ๋“ฑ์ด ๋‘๊ฐ€์ง€ ๋ฐฉ์•ˆ ์ฆ‰, ์• ๋…ธํ…Œ์ด์…˜๊ณผ XML์‚ฌ์šฉ์—
๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์• ๋…ธํ…Œ์ด์…˜์—์„œ ์ปฌ๋Ÿผ์„ ์ •์˜ํ•˜๊ณ 
XML์—์„œ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ๊ธฐ์— ๋‘˜์ค‘ํ•˜๋‚˜๋ฅผ
์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์œผ๋กœ ์˜คํ•ด(?)ํ–ˆ์—ˆ๋‚˜ ์‹ถ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฉ๋ฒ• ๋˜๋Š” ๊ด€๋ จ์ž๋ฃŒ๋ฅผ ๊ณต์œ ํ• ์ˆ˜ ์žˆ์„๊นŒ์š”?

Toby Lee

unread,
Jul 8, 2011, 2:26:19โ€ฏAM7/8/11
to ks...@googlegroups.com
์• ๋…ธํ…Œ์ด์…˜๊ณผ XML์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ JPA ์ŠคํŽ™์—์„œ ์ฐพ์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ XML descriptor๋Š” ์• ๋…ธํ…Œ์ด์…˜ ์„ค์ •์„ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ annotation๊ณผ xml์— ์„ค์ • ํ•ญ๋ชฉ์„ ์ž˜ ๋ถ„๋ฆฌํ•ด์„œ ๋„ฃ์œผ์‹œ๋ฉด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.ย JPA ์ŠคํŽ™ 12์žฅ(2.0๊ธฐ์ค€)์— ์ž˜ ๋‚˜์™€์žˆ๋„ค์š”.

๊ทธ ์™ธ์—๋„ ๋Œ€๋ถ€๋ถ„์˜ JPA ๊ตฌํ˜„ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ ˆํผ๋Ÿฐ์Šค ๋งค๋‰ด์–ผ์—๋„ ๋น„์Šทํ•œ ์„ค๋ช…์ด ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.ย 

์—”ํ‹ฐํ‹ฐ ๊ด€๊ณ„ ์ •๋ณด๋Š” ์• ๋…ธํ…Œ์ด์…˜์—, ํผ์‹œ์Šคํ„ด์Šค ์ •๋ณด๋Š” XML์— ๋„ฃ๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค๋Š” ๊ฒƒ์€ 2007๋…„ ์Šคํ”„๋ง ์› ์œ ๋Ÿฝ ์ปจํผ๋Ÿฐ์Šค์—์„œ BEA์˜ EJB ํŒ€ ๋ฆฌ๋”์ด๋ฉฐ OpenJPA ํ”„๋กœ์ ํŠธ์˜ ๋ฆฌ๋”์ด๊ธฐ๋„ ํ•œย Patrick Linskey์˜ ์„ธ์…˜์„ ํ†ตํ•ด์„œ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.ย 

์ƒ์‹์ ์œผ๋กœ ์ƒ๊ฐํ•ด๋„ ํ™˜๊ฒฝ์— ์ข…์†์ ์ด์ง€ ์•Š์€ ์ˆœ์ˆ˜ํ•œ ์—”ํ‹ฐํ‹ฐ ์ •๋ณด๋Š” ์ˆ˜์ •์‹œ ์ปดํŒŒ์ผ์ด ํ•„์š”ํ•œ ์• ๋…ธํ…Œ์ด์…˜์— ๋„ฃ๊ณ , ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ํผ์‹œ์Šคํ„ด์Šค ์ •๋ณด๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ์ˆ˜์ • ๊ฐ€๋Šฅํ•œ XML์— ๋„ฃ๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ JPA ์ŠคํŽ™๋„ XML๊ณผ ์• ๋…ธํ…Œ์ด์…˜์„ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๊ณ , ์• ๋…ธํ…Œ์ด์…˜ ์ •๋ณด์— XML ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ ๋˜๋Š” ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์„œ ํ™œ์šฉํ•˜๋„๋ก ๋งŒ๋“  ๊ฒƒ์ด๊ฒ ์ฃ .

๋‹น์‹œ ์ปจํผ๋Ÿฐ์Šค ๋ฐœํ‘œ์ž๋ฃŒ๊ฐ€ ์–ด๋”˜๊ฐ€ ์žˆ์„ํ…๋ฐ, ์ง€๊ธˆ์€ ๋ชป์ฐพ๊ฒ ๋„ค์š”. ๋‚˜์ค‘์—๋ผ๋„ ์ฐพ์œผ๋ฉด ์˜ฌ๋ ค๋“œ๋ฆฌ์ฃ .

JPA ์ฑ…์ด๋‚˜ ์ž๋ฃŒ๋Š” ๋”ฐ๋กœ ๋ณธ ๊ฒƒ์€ ์—†์ง€๋งŒ, ์ด๋Ÿฐ ๊ฐ€์ด๋“œ ์กฐ์ฐจ ์—†๋‹ค๋ฉด ์ข€ ์‹ค๋ง์ž…๋‹ˆ๋‹ค.

2011/7/8 ์ž„๋ณ‘์ธ(ํฌ๋ฐ๋ธŒ) <brianlim...@gmail.com>

Sungchul Park

unread,
Jul 8, 2011, 2:39:53โ€ฏAM7/8/11
to ks...@googlegroups.com
์ œ๊ฐ€ ํ•ด๋ณด์ง€๋Š” ์•Š์•˜๊ณ  ์ŠคํŽ™๋งŒ ๋ด์„œ ์•Œ๊ณ  ์žˆ๊ธฐ์— ๋‹ต๋ณ€์„ ๋“œ๋ฆด ์œ„์น˜๋Š” ์•„๋‹ˆ์ง€๋งŒ ์กฐ๊ธˆ์ด๋ผ๋„ ์ฐธ๊ณ ๊ฐ€ ๋ ๊นŒ ์‹ถ์–ด ๊ธ€์„ ์”๋‹ˆ๋‹ค.


๋งŽ์€ ์˜ˆ์ œ์™€ ๋ฌธ์„œ๋“ฑ์ด ๋‘๊ฐ€์ง€ ๋ฐฉ์•ˆ ์ฆ‰, ์• ๋…ธํ…Œ์ด์…˜๊ณผ XML์‚ฌ์šฉ์—
๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์• ๋…ธํ…Œ์ด์…˜์—์„œ ์ปฌ๋Ÿผ์„ ์ •์˜ํ•˜๊ณ 
XML์—์„œ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ๊ธฐ์— ๋‘˜์ค‘ํ•˜๋‚˜๋ฅผ
์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์œผ๋กœ ์˜คํ•ด(?)ํ–ˆ์—ˆ๋‚˜ ์‹ถ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
์•„๋งˆ ๋Œ€๋ถ€๋ถ„์˜ ์ž๋ฃŒ์—์„œ ๋ณด์‹  ๋‘ ๊ฐ€์ง€ ๋งคํ•‘ ๋ฐฉ๋ฒ•์€ ์• ๋…ธํ…Œ์ด์…˜์˜ ๊ฒฝ์šฐ JPA ์ŠคํŽ™์ผ ๊ฒƒ์ด๊ณ  XML์€ JPA์˜ XML(orm.xml)์ด ์•„๋‹ˆ๋ผ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ๋งคํ•‘(hbm.xml)์ผ ๊ฒ๋‹ˆ๋‹ค. JPA XML ๋งคํ•‘์„ ๋‹ค๋ฃจ๋Š” ๋ฌธ์„œ๋Š” ํ”์น˜ ์•Š์„ ๋“ฏ ์‹ถ๋„ค์š”.

JPA ํ‘œ์ค€ ์ •์˜์„œ 12.3์žฅ์— XML๋กœ ORM ์„ค์ •์„ ํ•˜๋Š” ๊ทœ์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ์ด๋ ‡๊ฒŒ ๋ผ ์žˆ์Šต๋‹ˆ๋‹ค.
ย XML object/relational mapping descriptor is used to selectively override annotation values or whether it serves as a complete alternative to Java language metadata annotations.
๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ํ† ๋น„๋‹˜ ๋ง์”€์ฒ˜๋Ÿผ Annotation์œผ๋กœ ๊ธฐ๋ณธ ๋งคํ•‘์„ ํ•˜๊ณ  ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋ณ€ํ™”๋Š” ๋ถ€๋ถ„์„ XML๋กœ ์ˆ˜์ •ํ•ด์„œ ์šด์˜ํ•  ์ˆ˜๋„ ์žˆ๊ณ  Annotation์„ ์™„์ „ํžˆ ๋Œ€์ฒดํ•  ์ˆ˜๋„ ์žˆ๋Š” ๊ฑฐ์ฃ .

๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ˆ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์ชฝ ๋ฌธ์„œ์—๋Š” annotation ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ •๋„๋กœ๋งŒ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

http://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html/listeners.html#d0e3102

EclipseLink์—๋Š” ์•„์ฃผ ๊ฐ„๋‹จํžˆ ์–ธ๊ธ‰๋˜์–ด ์žˆ๋„ค์š”.

http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Configuration/JPA/orm.xml

๋งŒ์•ฝ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ๋งŒ ์“ฐ์‹ ๋‹ค๋ฉด ๊ทธ๋ƒฅ hbm.xml๋กœ ๋งคํ•‘ํ•˜์‹œ๋Š” ๊ฒŒ ์ž๋ฃŒ๋„ ์ถฉ๋ถ„ํ•˜๊ณ  ๊ฒฝํ—˜์ž์˜ ๋„์›€์„ ๊ตฌํ•˜๊ธฐ๋„ ์‰ฌ์šธ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค. ๊ผญ ํ‘œ์ค€ API๋ฅผ ์“ฐ์…”์•ผ ํ•œ๋‹ค๋ฉด ํ‘œ์ค€ ๋ฌธ์„œ ์ฐธ๊ณ ํ•ด์„œ ์‹œ๋„ํ•ด๋ณด์‹œ๋Š” ๊ฒƒ๋„ ์ข‹๊ฒ ๋„ค์š”.

์ตœ์˜๋ชฉ

unread,
Jul 8, 2011, 3:08:40โ€ฏAM7/8/11
to ks...@googlegroups.com
ํ† ๋น„๋‹˜์˜ ๊ธ€(http://toby.epril.com/?p=341)์„ ์ฐธ์กฐ๋กœ ํ•˜์—ฌ javaone 2007 ์ž๋ฃŒ๋ฅผ ๊ฒ€์ƒ‰ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋™์˜์ƒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.ย 

์ด ์ž๋ฃŒ๊ฐ€ ๋งž๋‚˜์š”? ^^;;;

2011๋…„ 7์›” 8์ผ ์˜คํ›„ 3:39, Sungchul Park <gyu...@gmail.com>๋‹˜์˜ ๋ง:

Sungchul Park

unread,
Jul 8, 2011, 3:11:05โ€ฏAM7/8/11
to ks...@googlegroups.com
์ด๋Ÿฐ! ๊ฐ€์žฅ ์ข‹์€ ์ž๋ฃŒ๋ฅผ ๋‘๊ณ  ์›น์—์„œ๋งŒ ์ฐพ์•˜๋„ค์š”.

์ด ์ฑ…... ^^

http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=8992939507

ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ๋งคํ•‘, JPA Annotation ๋งคํ•‘, JPA XML ๋งคํ•‘์„ ๋‹ค ์„ค๋ช…ํ•˜์ฃ .

์ž„๋ณ‘์ธ(ํฌ๋ฐ๋ธŒ)

unread,
Jul 9, 2011, 12:14:21โ€ฏAM7/9/11
to Korea Spring User Group
๋น ๋ฅธ ๋‹ต๋ณ€ ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉฐ ๋„ˆ๋ฌด ๋Šฆ๊ฒŒ ๋‹ต๊ธ€์„ ๋‹ฌ์•„ ๋ฏธ์•ˆํ•ฉ๋‹ˆ๋‹ค.

๊ตญ๋ฐฉ๋Œ€ํ•™๊ต์—์„œ ๋‹ค๋ฅธ ์—ฐ๊ตฌ์„ฑ ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๊ตญ๋ฐฉ๋Œ€ํ•™๊ต์—์„œ๋Š” ์ธํ„ฐ๋„ท์ด ์•ˆ๋˜์„œ์š”.
์Šค๋งˆํŠธํฐ์œผ๋กœ ์ฝ๊ธฐ๋Š” ํ–ˆ๋Š”๋ฐ ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ๋‹ค๋˜์„œ ~~ ^^
ํ›„๋ฐฐ ์ง์›๋“ค์—๊ฒŒ ์ŠคํŽ™์„ ์ฝ์–ด๋ผ ๋ผ๊ณ  ๋งํ•˜๋ฉด์„œ ์ € ์ž์‹ ์ด ์ŠคํŽ™์— ์†Œํ™€ํ•œ ๊ฐ์ด ์žˆ์—ˆ๋„ค์š”.
์ฝ์–ด ๋ณด๊ธฐ๋Š” ํ–ˆ์„ํ…Œ์ง€๋งŒ ์ฝ๋Š” ๊ฒƒ๊ณผ ๊ณ ์ •๊ด€๋…์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ ์ „ํ˜€ ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ ๋ฐ›์•„ ๋“ค์ด๊ธฐ๋„ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

>> ์—”ํ‹ฐํ‹ฐ์˜ ๊ณ ์œ ํ•œ ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •๋ณด๋Š” ์• ๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ , ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ์˜์†์„ฑ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด(์ปฌ๋Ÿผ ๋‚ด์šฉ, ํ…Œ์ด๋ธ” ์ •๋ณด,
>> ์ธ๋ฑ์Šค, ํ‚ค ์ƒ์„ฑ๋ฐฉ๋ฒ• ๋“ฑ)์€ XML๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค

ํ† ๋น„๋‹˜์ด ๋ง์”€ํ•˜์‹  ๋ฐฉ๋ฒ•์ด ์ž์—ฐ์Šค๋Ÿฝ๋‹ค๋Š” ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

> ์—”ํ‹ฐํ‹ฐ ๊ด€๊ณ„ ์ •๋ณด๋Š” ์• ๋…ธํ…Œ์ด์…˜์—, ํผ์‹œ์Šคํ„ด์Šค ์ •๋ณด๋Š” XML์— ๋„ฃ๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค๋Š” ๊ฒƒ์€ 2007๋…„ ์Šคํ”„๋ง ์› ์œ ๋Ÿฝ ์ปจํผ๋Ÿฐ์Šค์—์„œ BEA์˜
> EJB ํŒ€ ๋ฆฌ๋”์ด๋ฉฐ OpenJPA ํ”„๋กœ์ ํŠธ์˜ ๋ฆฌ๋”์ด๊ธฐ๋„ ํ•œ Patrick Linskey์˜ ์„ธ์…˜์„ ํ†ตํ•ด์„œ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

2007๋…„๋„์— ๊ทธ๋Ÿฌํ•œ ๋‚ด์šฉ์„ ์ ‘ํ•˜์…จ๋‹ค๋‹ˆ ์ •๋ง ๋นจ๋ž๋„ค์š”.

์ด๋Ÿฐ ํ† ๋ก ์„ ํ†ตํ•ด์„œ ์ €์˜ ์ƒ๊ฐ๋„ ๋งŽ์ด ๋„“์–ด์ง€๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
"์ด๋ก ๊ณผ ์‹ค์ „"์ด๋ผ๋Š” ๊ณ ์ „์ ์ธ ๋ง์ด ์ƒ๊ฐ๋‚ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ ๋„ˆ๋ฌด ์‹ค์ „์—๋งŒ ์น˜์ค‘ํ•ด์™”๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“œ๋Š” ๊ตฐ์š”.
์ข‹์€ ์ •๋ณด์™€ ์˜๊ฒฌ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ž„๋ณ‘์ธ(ํฌ๋ฐ๋ธŒ)

unread,
Jul 9, 2011, 12:31:57โ€ฏAM7/9/11
to Korea Spring User Group
JPA ํ‘œ์ค€์„ ๊ผญ ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ
ํšŒ์‚ฌ์˜ ๊ธฐ์ˆ ๊ณผ์ œ์ค‘ "GAE์™€ ๋‹ค๋ฅธ WASํ™˜๊ฒฝ(RDBMS)์— ๋ชจ๋‘ ๋™์ž‘๊ฐ€๋Šฅํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ"
์ด๋ผ๋Š” ์–ด๋ ค์šด ๋ชฉํ‘œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ํŠน์ˆ˜ํ•œ JPA ๊ตฌํ˜„์ฒด์˜ ํ‘œ์ค€์™ธ์ ์ธ ๊ธฐ๋Šฅ๋“ค์€ ์ง€์–‘ํ•˜๊ณ 
๊ฐ€๊ธ‰์  ํ‘œ์ค€๋‚ด์—์„œ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๊ฑฐ๋“ ์š”.
GAE ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•˜๋Š” DataNucleus์—์„œ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” JPA ์ŠคํŽ™์ด ๋งŽ๊ธฐ๋„ ํ•˜๊ตฌ์š”.

ํ˜„์žฌ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ JPA(ํ•˜์ด๋ฒ„๋„ค์ดํŠธ)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์Šต๊ด€์„ ๋“ค์ด๊ณ  ์‹ถ์–ด์„œ ํ‘œ์ค€๊ฐœ๋ฐœ์„ ์„ ํ˜ธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฌผ๋ก  100% ๊ตฌํ˜„์ฒด ์ข…์กฑ์ ์ธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
Hibernate.initialize() ๋‚˜ ๊ธฐํƒ€ ๋งคํ•‘ ์• ๋…ธํ…Œ์ด์…˜(ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋Š” ์ •๋ง ๋งŽ์€ ๊ณ ๊ธ‰๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋”๊ตฐ์š”)์„ ์‚ฌ์šฉํ•˜๊ธด
ํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์ปดํŒŒ์ผ์—๋Ÿฌ๊ฐ€ ^^

ํ•œ๋ฒˆ ๋ตˆ์—ˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์งˆ๋ฌธ์ž๋“ค์—๊ฒŒ ์นœ์ ˆํ•˜๊ฒŒ ๋‹ต๋ณ€์„ ํ•ด์ฃผ์‹œ๋Š” [ํšŒ์žฅ๋‹˜์€ ์ข€์งฑ์ธ๋“ฏ! ] ^^ ใ…Žใ…Ž ใ…‹ใ…‹ :D ~~~
์ข‹์€ ์ •๋ณด(๋‹ค๋ฅธ ๊ตฌํ˜„์ฒด ๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…๊นŒ์ง€ ์นœ์ ˆํ•˜๊ฒŒ ...)์™€ ๋‹ต๊ธ€์— ๋‹ค์‹œํ•œ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Reply all
Reply to author
Forward
0 new messages