ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

²©»Ý˼»ªJava¿ª·¢¹¤³ÌʦÃæÊÔÌâ¼°´ð°¸(Ò»)
2014-11-24 01:37:59 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:498´Î
Tags£º»Ý˼»ª Java ¿ª·¢ ¹¤³Ìʦ ÊÔÌâ ´ð°¸

1¡£Á¬½ÓÊý¾Ý¿âʹÓÃJDBC£¬ÎªÊ²Ã´ÓÖÌṩÁËJPA£¿HibernateÓëJPAµÄ¹Øϵ£¿


ʲôÊÇJPA


Java Persistence API



JPAͨ¹ýJDK 5.0×¢½â»òXMLÃèÊö¶ÔÏó£­¹Øϵ±íµÄÓ³Éä¹Øϵ£¬²¢½«ÔËÐÐÆÚµÄʵÌå¶ÔÏó³Ö¾Ã»¯µ½Êý¾Ý¿âÖС£


SunÒýÈëеÄJPA ORM¹æ·¶³öÓÚÁ½¸öÔ­Òò£ºÆäÒ»£¬¼ò»¯ÏÖÓÐJava EEºÍJava SEÓ¦ÓõĶÔÏó³Ö¾Ã»¯µÄ¿ª·¢¹¤×÷£»Æä¶þ£¬SunÏ£ÍûÕûºÏ¶ÔORM¼¼Êõ£¬ÊµÏÖÌìϹéÒ»¡£


JPAÓÉEJB 3.0Èí¼þר¼Ò×鿪·¢£¬×÷ΪJSR-220ʵÏÖµÄÒ»²¿·Ö¡£µ«Ëü²»àóÓÚEJB 3.0£¬Äã¿ÉÒÔÔÚWebÓ¦Óá¢ÉõÖÁ×ÀÃæÓ¦ÓÃÖÐʹÓá£JPAµÄ×ÚÖ¼ÊÇΪPOJOÌṩ³Ö¾Ã»¯±ê×¼¹æ·¶£¬Óɴ˿ɼû£¬¾­¹ýÕ⼸ÄêµÄʵ¼ù̽Ë÷£¬Äܹ»ÍÑÀëÈÝÆ÷¶ÀÁ¢ÔËÐУ¬·½±ã¿ª·¢ºÍ²âÊÔµÄÀíÄîÒѾ­ÉîÈëÈËÐÄÁË¡£Ä¿Ç°Hibernate 3.2¡¢TopLink 10.1.3ÒÔ¼°OpenJPA¶¼ÌṩÁËJPAµÄʵÏÖ¡£


JPAµÄ×ÜÌå˼ÏëºÍÏÖÓÐHibernate¡¢TopLink£¬JDOµÈORM¿ò¼Ü´óÌåÒ»Ö¡£×ܵÄÀ´Ëµ£¬JPA°üÀ¨ÒÔÏÂ3·½ÃæµÄ¼¼Êõ£º


ORMÓ³ÉäÔªÊý¾Ý£¬JPAÖ§³ÖXMLºÍJDK 5.0×¢½âÁ½ÖÖÔªÊý¾ÝµÄÐÎʽ£¬ÔªÊý¾ÝÃèÊö¶ÔÏóºÍ±íÖ®¼äµÄÓ³Éä¹Øϵ£¬¿ò¼Ü¾Ý´Ë½«ÊµÌå¶ÔÏó³Ö¾Ã»¯µ½Êý¾Ý¿â±íÖУ»


JPA µÄAPI£¬ÓÃÀ´²Ù×÷ʵÌå¶ÔÏó£¬Ö´ÐÐCRUD²Ù×÷£¬¿ò¼ÜÔÚºǫ́ÌæÎÒÃÇÍê³ÉËùÓеÄÊÂÇ飬¿ª·¢Õß´Ó·±ËöµÄJDBCºÍSQL´úÂëÖнâÍѳöÀ´¡£


²éѯÓïÑÔ£¬ÕâÊdz־û¯²Ù×÷ÖкÜÖØÒªµÄÒ»¸ö·½Ã棬ͨ¹ýÃæÏò¶ÔÏó¶ø·ÇÃæÏòÊý¾Ý¿âµÄ²éѯÓïÑÔ²éѯÊý¾Ý£¬±ÜÃâ³ÌÐòµÄSQLÓï¾ä½ôÃÜñîºÏ¡£


Èý¡¢JPAµÄÓÅÊÆ


1 ±ê×¼»¯


JPA ÊÇ JCP ×éÖ¯·¢²¼µÄ Java EE ±ê×¼Ö®Ò»£¬Òò´ËÈκÎÉù³Æ·ûºÏ JPA ±ê×¼µÄ¿ò¼Ü¶¼×ñѭͬÑùµÄ¼Ü¹¹£¬ÌṩÏàͬµÄ·ÃÎÊ API£¬Õâ±£Ö¤ÁË»ùÓÚJPA¿ª·¢µÄÆóÒµÓ¦ÓÃÄܹ»¾­¹ýÉÙÁ¿µÄÐ޸ľÍÄܹ»ÔÚ²»Í¬µÄJPA¿ò¼ÜÏÂÔËÐС£


2 ¶ÔÈÝÆ÷¼¶ÌØÐÔµÄÖ§³Ö


JPA ¿ò¼ÜÖÐÖ§³Ö´óÊý¾Ý¼¯¡¢ÊÂÎñ¡¢²¢·¢µÈÈÝÆ÷¼¶ÊÂÎñ£¬ÕâʹµÃ JPA ³¬Ô½Á˼òµ¥³Ö¾Ã»¯¿ò¼ÜµÄ¾ÖÏÞ£¬ÔÚÆóÒµÓ¦Ó÷¢»Ó¸ü´óµÄ×÷Óá£


3 ¼òµ¥Ò×Ó㬼¯³É·½±ã


JPAµÄÖ÷ҪĿ±êÖ®Ò»¾ÍÊÇÌṩ¸ü¼Ó¼òµ¥µÄ±à³ÌÄ£ÐÍ£ºÔÚJPA¿ò¼ÜÏ´´½¨ÊµÌåºÍ´´½¨Java ÀàÒ»Ñù¼òµ¥£¬Ã»ÓÐÈκεÄÔ¼ÊøºÍÏÞÖÆ£¬Ö»ÐèҪʹÓà javax.persistence.Entity½øÐÐ×¢ÊÍ£»JPAµÄ¿ò¼ÜºÍ½Ó¿ÚÒ²¶¼·Ç³£¼òµ¥£¬Ã»ÓÐÌ«¶àÌرðµÄ¹æÔòºÍÉè¼ÆģʽµÄÒªÇ󣬿ª·¢Õß¿ÉÒÔºÜÈÝÒ×µÄÕÆÎÕ¡£JPA»ùÓÚ·ÇÇÖÈëʽԭÔòÉè¼Æ£¬Òò´Ë¿ÉÒÔºÜÈÝÒ׵ĺÍÆäËü¿ò¼Ü»òÕßÈÝÆ÷¼¯³É¡£


4 ¿ÉæÇÃÀJDBCµÄ²éѯÄÜÁ¦


JPAµÄ²éѯÓïÑÔÊÇÃæÏò¶ÔÏó¶ø·ÇÃæÏòÊý¾Ý¿âµÄ£¬ËüÒÔÃæÏò¶ÔÏóµÄ×ÔÈ»Óï·¨¹¹Ôì²éѯÓï¾ä£¬¿ÉÒÔ¿´³ÉÊÇHibernate HQLµÄµÈ¼ÛÎï¡£JPA¶¨ÒåÁ˶ÀÌصÄJPQL£¨Java Persistence Query Language£©£¬JPQLÊÇEJB QLµÄÒ»ÖÖÀ©Õ¹£¬ËüÊÇÕë¶ÔʵÌåµÄÒ»ÖÖ²éѯÓïÑÔ£¬²Ù×÷¶ÔÏóÊÇʵÌ壬¶ø²»ÊǹØϵÊý¾Ý¿âµÄ±í£¬¶øÇÒÄܹ»Ö§³ÖÅúÁ¿¸üкÍÐ޸ġ¢JOIN¡¢GROUP BY¡¢HAVING µÈͨ³£Ö»ÓÐ SQL ²ÅÄܹ»ÌṩµÄ¸ß¼¶²éѯÌØÐÔ£¬ÉõÖÁ»¹Äܹ»Ö§³Ö×Ó²éѯ¡£


5 Ö§³ÖÃæÏò¶ÔÏóµÄ¸ß¼¶ÌØÐÔ


JPA ÖÐÄܹ»Ö§³ÖÃæÏò¶ÔÏóµÄ¸ß¼¶ÌØÐÔ£¬ÈçÀàÖ®¼äµÄ¼Ì³Ð¡¢¶à̬ºÍÀàÖ®¼äµÄ¸´ÔÓ¹Øϵ£¬ÕâÑùµÄÖ§³ÖÄܹ»Èÿª·¢Õß×î´óÏ޶ȵÄʹÓÃÃæÏò¶ÔÏóµÄÄ£ÐÍÉè¼ÆÆóÒµÓ¦Ó㬶ø²»ÐèÒª×ÔÐд¦ÀíÕâЩÌØÐÔÔÚ¹ØϵÊý¾Ý¿âµÄ³Ö¾Ã»¯¡£


ËÄ¡¢JPAµÄ¹©Ó¦ÉÌ


JPA µÄÄ¿±êÖ®Ò»ÊÇÖƶ¨Ò»¸ö¿ÉÒÔÓɺܶ๩ӦÉÌʵÏÖµÄAPI£¬²¢ÇÒ¿ª·¢ÈËÔ±¿ÉÒÔ±àÂëÀ´ÊµÏÖ¸ÃAPI£¬¶ø²»ÊÇʹÓÃ˽Óй©Ó¦ÉÌÌØÓеÄAPI¡£Òò´Ë¿ª·¢ÈËÔ±Ö»ÐèʹÓù©Ó¦ÉÌÌØÓеÄAPIÀ´»ñµÃJPA¹æ·¶Ã»Óнâ¾öµ«Ó¦ÓóÌÐòÖÐÐèÒªµÄ¹¦ÄÜ¡£¾¡¿ÉÄܵØʹÓÃJPA API£¬µ«Êǵ±ÐèÒª¹©Ó¦É̹«¿ªµ«Êǹ淶ÖÐûÓÐÌṩµÄ¹¦ÄÜʱ£¬ÔòʹÓù©Ó¦ÉÌÌØÓеÄAPI¡£


1 Hibernate


JPAÊÇÐèÒªProviderÀ´ÊµÏÖÆ书Äܵģ¬Hibernate¾ÍÊÇJPA ProviderÖкÜÇ¿µÄÒ»¸ö£¬Ä¿Ç°À´ËµÓ¦¸ÃÎÞÈËÄܳöÆäÓÒ¡£´Ó¹¦ÄÜÉÏÀ´Ëµ£¬JPAÏÖÔÚ¾ÍÊÇHibernate¹¦ÄܵÄÒ»¸ö×Ó¼¯¡£Hibernate ´Ó3.2¿ªÊ¼£¬¾Í¿ªÊ¼¼æÈÝJPA¡£Hibernate3.2»ñµÃÁËSun TCKµÄJPA(Java Persistence API) ¼æÈÝÈÏÖ¤¡£


Ö»ÒªÊìϤHibernate»òÕßÆäËûORM¿ò¼Ü£¬ÔÚʹÓÃJPAʱ»á·¢ÏÖÆäʵ·Ç³£ÈÝÒ×ÉÏÊÖ¡£ÀýÈçʵÌå¶ÔÏóµÄ״̬£¬ÔÚHibernateÓÐ×ÔÓÉ¡¢³Ö¾Ã¡¢ÓÎÀëÈýÖÖ£¬JPAÀïÓÐnew£¬managed£¬detached£¬removed£¬Ã÷ÑÛÈËÒ»¿´¾ÍÖªµÀ£¬ÕâЩ״̬¶¼ÊÇÒ»Ò»¶ÔÓ¦µÄ¡£ÔÙÈçflush·½·¨£¬¶¼ÊǶÔÓ¦µÄ£¬¶øÆäËûµÄÔÙÈç˵Query query = manager.createQuery(sql)£¬ËüÔÚHibernateÀïд·¨ÉÏÊÇsession£¬¶øÔÚJPAÖбä³ÉÁËmanager£¬ËùÒÔ´ÓHibernateµ½JPAµÄ´ú¼ÛÓ¦¸ÃÊǷdz£Ð¡µÄ


ͬÑù£¬JDO£¬Ò²¿ªÊ¼¼æÈÝJPA¡£ÔÚORMµÄÁìÓòÖУ¬¿´À´JPAÒѾ­ÊÇÍõµÀ£¬¹æ·¶¾ÍÊǹ淶¡£ÔÚ¸÷´ó³§É̵ÄÖ§³ÖÏ£¬JPAµÄʹÓÿªÊ¼±äµÃ¹ã·º¡£


2 Spring


Spring + Hibernate ³£³£±»³ÆΪ Java Web Ó¦ÓÃÈËÆø×îÍúµÄ¿ò¼Ü×éºÏ¡£¶øÔÚ JCP ͨ¹ýµÄ Web Beans JSR £¬È´Óû½«JSF + EJB + JPA ¡¢À´×Ô JBoss Seam£¨Spring ³ýÍ⣩µÄһЩ×é¼þºÍEJB 3£¨Ä¿Ç°Äܹ»ÌṩÓлù±¾À¹½ØºÍÒÀÀµ×¢È빦Äܵļò»¯ Session Bean ¿ò¼Ü£©µÄÒ»¸ö Web ×éºÏ½øÐбê×¼»¯¡£Èç½ñµÄ Spring 2.0 Ϊ JPA ÌṩÁËÍêÕûµÄ EJB ÈÝÆ÷ÆõÔ¼£¬ÔÊÐí JPAÔÚÈκλ·¾³ÄÚ¿ÉÒÔÔÚ Spring ¹ÜÀíµÄ·þÎñ²ãʹÓ㨰üÀ¨ Spring µÄËùÓÐ AOP ºÍ DI ÔöÇ¿£©¡£Í¬Ê±£¬¹ØÓÚÏÂÒ»¸öWebÓ¦ÓÃ×éºÏ»áÊÇ EJB¡¢Spring + Hibernate »¹ÊÇ Spring + JPA µÄÂÛÕ½£¬ÔçÒѳä³âÓÚ¶ú¡£


ÔÚSpring 2.0.1ÖУ¬ÕýʽÌṩ¶ÔJPAµÄÖ§³Ö£¬ÕâÒ²´Ù³ÉÁËJPAµÄ·¢Õ¹£¬ÒªÖªµÀJPAµÄºÃ´¦ÔÚÓÚ¿ÉÒÔ·ÖÀëÓÚÈÝÆ÷ÔËÐУ¬±äµÃ¸ü¼ÓµÄ¼ò½à¡£


3 OpenJPA


OpenJPA ÊÇ Apache ×éÖ¯ÌṩµÄ¿ªÔ´ÏîÄ¿£¬ËüʵÏÖÁË EJB 3.0 ÖÐµÄ JPA ±ê×¼£¬Îª¿ª·¢ÕßÌṩ¹¦ÄÜÇ¿´ó¡¢Ê¹Óüòµ¥µÄ³Ö¾Ã»¯Êý¾Ý¹ÜÀí¿ò¼Ü¡£OpenJPA ·â×°Á˺͹ØϵÐÍÊý¾Ý¿â½»»¥µÄ²Ù×÷£¬Èÿª·¢Õß°Ñ×¢ÒâÁ¦¼¯ÖÐÔÚ±àдҵÎñÂß¼­ÉÏ¡£OpenJPA ¿ÉÒÔ×÷Ϊ¶ÀÁ¢µÄ³Ö¾Ã²ã¿ò¼Ü·¢»Ó×÷Óã¬Ò²¿ÉÒÔÇáËɵÄÓëÆäËü Java EE Ó¦Óÿò¼Ü»òÕß·ûºÏ EJB 3.0 ±ê×¼µÄÈÝÆ÷¼¯³É¡£


4 ÆäËü


Ä¿Ç°Ö§³ÖµÄʵÏÖ°üÀ¨Toplink¡¢Hibernate EntitymanagerµÈ¡£TopLinkÒÔÇ°ÐèÒªÊÕ·Ñ£¬Èç½ñ¿ªÔ´ÁË¡£OpenJPAËäÈ»Ãâ·Ñ£¬µ«¹¦ÄÜ¡¢ÐÔÄÜ¡¢ÆÕ¼°ÐԵȷ½Ãæ¸ü¼ÓÐèÒª¼Ó´óÁ¦¶È¡£


¶ÔÓÚEJBÀ´Ëµ£¬ÊµÌåBeanÒ»Ö±ÊDZ»ÅúÆÀµÄ¶ÔÏó£¬ÓÉÓÚÆäÌ«¸´ÔÓºÍÅÓ´ó¡£JPAµÄ³öÏÖ£¬ºÜ´ó³Ì¶ÈµÄ·ÖÀëÁ˸´ÔÓÐÔ¡£ÕâÈÃEJBµÄÍƹãÒ²±äµÃÈÝÒס£


×ܶøÑÔÖ®£¬JPA¹æ·¶Ö÷Òª¹Ø×¢µÄ½öÊÇAPIµÄÐÐΪ·½Ã棬¶øÓɸ÷ÖÖʵÏÖÍê³É´ó¶àÊýÐÔÄÜÓйصĵ÷ÓÅ¡£¾¡¹ÜÈç´Ë£¬ËùÓпɿ¿µÄʵÏÖ¶¼Ó¦¸ÃÓµÓÐijÖÖÊý¾Ý»º´æ£¬ÒÔ×÷ΪѡÔñ¡£µ«Ô¸²»¾ÃµÄ½«À´£¬JPAÄܳÉΪÕæÕýµÄ±ê×¼¡£


Î塢С½á


EJB 3.0ºÍJPA ºÁÎÞÒÉÎʽ«ÊÇJava EE 5µÄÖ÷ÒªÂôµã¡£ÔÚijЩÁìÓòÖУ¬ËüÃǸøJavaÉçÇø´øÀ´Á˾ºÕùÓÅÊÆ£¬²¢Ê¹J

Ê×Ò³ ÉÏÒ»Ò³ 1 2 3 ÏÂÒ»Ò³ βҳ 1/3/3
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£º2012Äê×îÐÂËã·¨ÃæÊÔÌ⼯ ÏÂһƪ£ºÃæÊÔÌâÄ¿:ÓÃjavaд쳲¨ÄÇÆõÊýÁÐ

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿