ÔõÑùʵÏÖÒ»¸öorm¿ò¼Ü
orm£¨¹¤¾ß¹ØϵӳÉ䣩¿ò¼ÜÊÇÒ»ÖÖ½«¹¤¾ßÄ£×ÓÓ³Éäµ½¹ØϵÊý¾Ý¿âµÄ¹¤¾ß¡£ÊµÏÖÒ»¸ö orm ¿ò¼ÜµÄ°ì·¨°üÀ¨£º1. ½ç˵ʵÌ壻2. ¹¹½¨Ó³ÉäÆ÷£»3. ʵÏÖÅÌÎÊÌìÉúÆ÷£»4. ¼¯³É³¤ÆÚ»¯»úÖÆ¡£½¹µã×é¼þ°üÀ¨£ºÊµÌåÓ³ÉäÒýÇæ¡¢ÅÌÎÊÌìÉúÆ÷¡¢Êý¾Ý³¤ÆÚ»¯¡£¸½¼Ó¹¦Ð§°üÀ¨£º¹Øϵ¼ÓÔØ¡¢»º´æ¡¢ÊÂÎñÖ§³ÖµÈ¡£
ÔõÑùʵÏÖÒ»¸ö ORM ¿ò¼Ü
1. ½ç˵ ORM
ORM£¨¹¤¾ß¹ØϵӳÉ䣩¿ò¼ÜÊÇÒ»ÖÖ½«¹¤¾ßÄ£×ÓÓ³Éäµ½¹ØϵÊý¾Ý¿âµÄ¹¤¾ß¡£ËüÔÊÐí¿ª·¢Ö°Ô±Ê¹ÓÃÀàºÍ¹¤¾ßÀ´²Ù×÷Êý¾Ý¿â£¬¶øÎÞÐè±àд SQL Óï¾ä¡£
2. ½¹µã×é¼þ
Ò»¸ö ORM ¿ò¼Üͨ³£ÓÉÒÔϽ¹µã×é¼þ×é³É£º
- ʵÌåÓ³ÉäÒýÇ棺½«ÀàÓ³Éäµ½Êý¾Ý¿â±íºÍÁС£
- ÅÌÎÊÌìÉúÆ÷£º½«¹¤¾ßÅÌÎÊת»»Îª SQL Óï¾ä¡£
- Êý¾Ý³¤ÆÚ»¯£º½«¹¤¾ßµÄ״̬ÉúÑĵ½Êý¾Ý¿âÖС£
3. ʵÏÖ°ì·¨
ʵÏÖÒ»¸ö ORM ¿ò¼ÜÉæ¼°ÒÔÏ°취£º
3.1 ½ç˵ʵÌå
½ç˵ÌåÏÖÊý¾Ý¿â±íµÄÀ༰Æä¶ÔÓ¦ÊôÐԺ͹Øϵ¡£
3.2 ¹¹½¨Ó³ÉäÆ÷
½¨É轫ÀàÓ³Éäµ½±íºÍÁеÄÓ³Éä¹æÔò¡£
3.3 ʵÏÖÅÌÎÊÌìÉúÆ÷
¿ª·¢Ò»¸öÌìÉú SQL ÅÌÎÊÓï¾äµÄÄ£¿é£¬»ùÓÚ¹¤¾ßÅÌÎʱí´ïʽ¡£
3.4 ¼¯³É³¤ÆÚ»¯»úÖÆ
ʵÏÖ½«¹¤¾ß״̬ÉúÑĵ½Êý¾Ý¿âÖеĻúÖÆ£¬°üÀ¨²åÈë¡¢¸üкÍɾ³ý²Ù×÷¡£
4. ¸½¼Ó¹¦Ð§
³ýÁ˽¹µã×é¼þÍ⣬ORM ¿ò¼Ü»¹¿ÉÒÔ°üÀ¨ÆäËû¸½¼Ó¹¦Ð§£¬ÀýÈ磺
- ¹Øϵ¼ÓÔØ£º×Ô¶¯¼ÓÔØÓ빤¾ß¹ØÁªµÄ¹Øϵ¡£
- »º´æ£ºïÔÌÊý¾Ý¿âÅÌÎʵÄÊýÄ¿¡£
- ÊÂÎñÖ§³Ö£ºÔÊÐíÔ×ÓÐÔ²Ù×÷¡£
5. ʾÀý
ÒÔÏÂÊÇʵÏÖ ORM ¿ò¼ÜµÄÒ»¸öʾÀý£º
5.1 ½ç˵ʵÌå
class Person { private int id; private String name; }
µÇ¼ºó¸´ÖÆ
5.2 ½ç˵ӳÉä
@Entity public class Person { @Id @GeneratedValue private Long id; @Column private String name; }
µÇ¼ºó¸´ÖÆ
5.3 ÌìÉúÅÌÎÊ
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<person> cq = cb.createQuery(Person.class); Root<person> personRoot = cq.from(Person.class); cq.where(cb.equal(personRoot.get("name"), "John Doe"));</person></person>
µÇ¼ºó¸´ÖÆ
5.4 ³¤ÆÚ»¯¹¤¾ß
em.persist(new Person("John Doe")); em.flush();
µÇ¼ºó¸´ÖÆ
ÒÔÉϾÍÊÇÔõÑùʵÏÖÒ»¸öorm¿ò¼ÜµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡