+ 연관들과 ì½œë ‰ì…˜ë“¤ì„ ì²˜ë¦¬í•˜ê¸°
+
+ 프ë½ì‹œë¥¼ 초기화 ì‹œí‚´ì— ìžˆì–´ 가능한 특별한 ë¼ìš´ë“œíŠ¸ë¦½ì„ 피하기 위해서
+ Dogì—ì„œ eagerly join시키는 ê²ƒì´ ê°„ìœ¼í•˜ë‹¤. ì´ê²ƒì€
+ addJoin() 메소드를 통해 행해지는ë°, 그것ì€
+ ì—°ê´€ì´ë‚˜ ì½œë ‰ì…˜ ë‚´ì—ì„œ ì¡°ì¸ì‹œí‚¤ëŠ” ê²ƒì„ ë‹¹ì‹ ì—게 허용해준다.
+
+
+
+ ì´ ì˜ˆì œì—ì„œ 반환ë˜ëŠ” Catë“¤ì€ ë°ì´í„°ë² ì´ìŠ¤ì—
+ 대한 ìž„ì˜ì˜ 특별한 ë¼ìš´ë“œí¬ë¦½ ì—†ì´ ì „ì²´ì 으로 ì´ˆê¸°í™”ëœ ê·¸ê²ƒë“¤ì˜ dog
+ 프로í¼í‹°ë¥¼ 갖는다. 우리가 joinì˜ ëŒ€ìƒ í”„ë¡œí¼í‹° 경로를 ì§€ì •í•˜ëŠ” ê²ƒì„ ê°€ëŠ¥í•˜ë„ë¡ í•˜ê¸° 위해
+ í•˜ë‚˜ì˜ alias ì´ë¦„("cat")ì„ ì¶”ê°€í–ˆìŒì„ 주지하ë¼. ëŒ€ì‹ ì— ì˜ˆë¥¼ 들어 Catì´
+ Dogì— ëŒ€í•´ one-to-many를 가질 경우, ì½œë ‰ì…˜ë“¤ì— ëŒ€í•´ ë™ì¼í•œ eager joiningì„
+ 행하는 ê²ƒì´ ê°€ëŠ¥í•˜ë‹¤.
+
+
+
+ ì´ ë‹¨ê³„ì—ì„œ 우리는 Hibernateì—ì„œ native 질ì˜ë“¤ì„ 사용가능하ë„ë¡ ë§Œë“¤ê¸° 위해
+ sql 질ì˜ë“¤ì„ 강화시키지는 ê²ƒì„ ì‹œìž‘í•˜ì§€ ì•Šê³ ì„œë„ native 질ì˜ë“¤ë¡œì„œ 가능한 ê²ƒì˜ í•œê³„ì—
+ ë„ë‹¬í•˜ê³ ìžˆë‹¤; ë¬¸ì œì ë“¤ì€ ë™ì¼í•œ íƒ€ìž…ì˜ ì—¬ëŸ¬ ì—”í‹°í‹°ë“¤ì„ ë°˜í™˜í• ë•Œ ë˜ëŠ” ë””í´íŠ¸ alias/column
+ ì´ë¦„ë“¤ì´ ì¶©ë¶„í•˜ì§€ ì•Šì„ ë•Œ ë°œìƒí•˜ê¸° 시작한다.
+
+
+
+ 여러 ê°œì˜ ì—”í‹°í‹°ë“¤ì„ ë°˜í™˜í•˜ê¸°
+
+ 지금까지 ê²°ê³¼ ì…‹ 컬럼 ì´ë¦„ë“¤ì€ ë§¤í•‘ 문서 ë‚´ì— ì§€ì •ëœ ì»¬ëŸ¼ ì´ë¦„들과 ë™ì¼í•˜ë‹¤ê³ ê°€ì •ë˜ì–´ 있다.
+ ë™ì¼í•œ ì»¬ëŸ¼ì´ í•˜ë‚˜ ì´ìƒì˜ í…Œì´ë¸” ë‚´ì—ì„œ ë‚˜íƒ€ë‚ ìˆ˜ 있기 때문ì—, ì´ê²ƒì€ 여러 ê°œì˜ í…Œì´ë¸”ë“¤ì„ ì¡°ì¸ì‹œí‚¤ëŠ”
+ SQL 질ì˜ë“¤ì— 대해 ë¬¸ì œê°€ ë 수 있다.
+
+ 컬럼 alias ì£¼ìž…ì€ ë‹¤ìŒ ì§ˆì˜(아마 ì‹¤íŒ¨í• ê²ƒì´ë‹¤)ì—ì„œ 필요하다:
+
+
+
+ ì´ ì§ˆì˜ì˜ 목ì ì€ ë‹¨ìœ„ í–‰ 당 ë‘ ê°œì˜ Cat ì¸ìŠ¤í„´ìŠ¤ë“¤, í•˜ë‚˜ì˜ cat ê·¸ë¦¬ê³ ê·¸ê²ƒì˜ mother를
+ 반환하는 것ì´ë‹¤. 왜ëƒí•˜ë©´ ê·¸ê²ƒë“¤ì´ ë™ì¼í•œ 컬럼 ì´ë¦„들로 매핑ë˜ì–´ 있기 ë•Œë¬¸ì— ì´ê²ƒì€ ì‹¤íŒ¨í• ê²ƒì´ê³
+ ë°ì´ë² ì´ìŠ¤ ìƒì—ì„œ ë°˜í™˜ëœ ì»¬ëŸ¼ aliasë“¤ì€ ì•„ë§ˆ 매핑들 ë‚´ì— ì§€ì •ëœ ì»¬ëŸ¼ë“¤("ID" 와 "NAME")ê³¼ 같지 ì•Šì€
+ "c.ID", "c.NAME" ë“±ì˜ í˜•ì‹ì¼ 것ì´ë‹¤.
+
+ ë‹¤ìŒ í˜•ì‹ì€ 컬럼 ì´ë¦„ 중복 취약ì ì„ ê°–ì§€ 않는다:
+
+
+
+ ì´ ì§ˆì˜ëŠ” 다ìŒì„ ì§€ì •í–ˆë‹¤:
+
+
+
+ 컬럼 aliasë“¤ì„ ì£¼ìž…í•˜ê¸° 위한 Hibernateìš© placeholderë“¤ì„ ê°€ì§„ SQL ì§ˆì˜ ë¬¸ìžì—´
+
+
+
+ ê·¸ 질ì˜ì— ì˜í•´ 반환ë˜ëŠ” 엔티티들
+
+
+
+ ìœ„ì— ì‚¬ìš©ëœ {cat.*} ê³¼ {mother.*} 표기는 "ëª¨ë“ í”„ë¡œí¼í‹°ë“¤"ì— ëŒ€í•œ ìƒëžµì´ë‹¤.
+ 다른 방법으로 ë‹¹ì‹ ì€ ì»¬ëŸ¼ë“¤ì„ ëª…ì‹œì 으로 ì—´ê±°í• ìˆ˜ë„ ìžˆì§€ë§Œ, ì´ ê²½ìš°ì— ìš°ë¦¬ëŠ” Hibernateë¡œ 하여금
+ SQL 컬럼 aliasë“¤ì„ ê°ê°ì˜ ì»¬ëŸ¼ì— ì£¼ìž…ì‹œí‚¤ë„ë¡ ê°•ì œí•œë‹¤. 컬럼 alias를 위한 placeholder는 단지
+ ê·¸ í…Œì´ë¸” aliasì— ì˜í•´ 수ì‹ëœ 프로í¼í‹° ì´ë¦„ì´ë‹¤. ë‹¤ìŒ ì˜ˆì œì—ì„œ, 우리는 다른 í…Œì´ë¸”(cat_log)로부터
+ 매핑 메타ë°ì´í„° ë‚´ì— ì„ ì–¸ëœ ê²ƒìœ¼ë¡œì˜ Cat들과 ê·¸ê²ƒë“¤ì˜ motherë“¤ì„ ê²€ìƒ‰í•œë‹¤. 우리는 우리가 좋다면
+ 심지어 where ì ˆ ë‚´ì— í”„ë¡œí¼í‹° alias를 ì‚¬ìš©í• ìˆ˜ë„ ìžˆìŒì„ 주지하ë¼.
+
+
+ .addEntity("cat", Cat.class)
+ .addEntity("mother", Cat.class).list()
+]]>
-