ADO.NETÓëORMµÄ±È½Ï(3):Linq to SQLʵÏÖCRUD
˵Ã÷£º¸öÈ˸оõÔÚJavaÁìÓò´óÐÍ¿ª·¢¶¼Àë²»ÁËORMµÄÉíÓ°£¬ËùνµÄSSH¾ÍÊÇSpring+Struts+Hibernate£¬³ýÁËÔÚѧϰ»ù´¡ÖªÊ¶µÄʱºò±»¸æÖª¿ÉÒÔʹÓÃJDBC²Ù×÷Êý¾Ý¿âÖ®Í⣬´óÁ¿µÄÊé¼®Öж¼Êǽ²ÊöʹÓÃHibernateÕâ¸öORM¹¤¾ßÀ´²Ù×÷Êý¾Ý¡£ÔÚ.NETÖвÙ×÷Êý¾Ý¿âµÄ·½Ê½ÓжàÖÖ£¬³ýÁË×îÖ±½ÓµÄ·½Ê½¾ÍÊÇʹÓÃADO.NETÖ®Í⣬»¹¿ÉÒÔʹÓÃNHibernateÕâ¸öHibernateÔÚ.NETÖеÄʵÏÖORM£¬Èç¹ûÄã¶ÔµÚÈý·½µÄORM³Ö»³ÒÉ̬¶È£¬Ä㻹¿ÉÒÔʹÓÃÀ´×Ô΢ÈíµÄʵÏÖ¡¢¸ùÕýÃçºìµÄLinq»òÕßEntityFramework¡£
´ó²¿·Ö´ÓÔçÆÚ¾Í¿ªÊ¼Ê¹ÓÃ.NET¿ª·¢µÄ³ÌÐòÔ±¿ÉÄܶÔADO.NETÓÐÖÖÃÔÁµ£¬Ê¹ÓÃADO.NET¿ÉÒÔ³ä·Ö½«ÎÒÃÇÔçÆÚµÄSQL֪ʶ·¢»ÓµÃÁÜÀ쾡Ö£¬²¢ÇÒ³öÓÚ¶ÔÐÔÄܵĿ¼ÂÇ£¬ÓÐЩÈ˶Ô.NETÖеÄORM»¹±£³ÖÒ»ÖÖ¹ÛÍû̬¶È£¬°üÀ¨ÎÒ×Ô¼ºÒ²ÊÇÕâÖÖ̬¶È¡£²»¹ý¼´Ê¹ÔÚʵ¼Ê¿ª·¢Öв»Ó㬲¢²»´ú±íÎÒÃDz»ÄÜÈ¥Á˽âºÍ±È½ÏÕâЩ¼¼Êõ£¬ÈκÎÊÂÎïµÄ³öÏÖºÍÏûÍö×ÜÓÐÆäÔÒòµÄ£¬ÎÒÃÇ¿ÉÒÔÁ˽âËüÃǵÄÓŵãºÍ³¤´¦¡£ËùÒÔ±¾È˳é³öÁ˼¸¸öÖÜÄ©µÄʱ¼ä·Ö±ðÓÃADO.NET¡¢NHibernate¡¢LinqºÍEntityFrameworkÀ´ÊµÏÖ¶ÔÊý¾Ý¿âµ¥±íÊý¾ÝµÄ´´½¨¡¢¶ÁÈ¡¡¢¸üкÍɾ³ý²Ù×÷£¬Ò²¾ÍÊÇËùνµÄCRUD£¨C:Create/R:Read/U:Update/D:Delete£©¡£
ͨ¹ýʵÏÖÏàͬ¹¦ÄܵıȽϣ¬´ó¼Ò×Ô¼ºÅжÏÄÇÖÖ·½Ê½¸üÊʺÏ×Ô¼º¡£ÐèҪ˵Ã÷µÄÊÇ£¬Èç¹ûÔÚVS2008ÖÐʹÓÃEntityFramework¾ÍÐèÒª°²×°VS2008SP1¡£
ÓïÑÔ¼¯³É²éѯ (LINQ) ÊÇ Visual Studio 2008 ÖеÄÒ»×鹦ÄÜ£¬¿ÉΪ C# ºÍ Visual Basic ÓïÑÔÓï·¨Ìṩǿ´óµÄ²éѯ¹¦ÄÜ¡£LINQ ÒýÈëÁ˱ê×¼µÄ¡¢Ò×ÓÚѧϰµÄ²éѯºÍ¸üÐÂÊý¾Ýģʽ£¬¿ÉÒÔ¶ÔÆä¼¼Êõ½øÐÐÀ©Õ¹ÒÔÖ§³Ö¼¸ºõÈκÎÀàÐ͵ÄÊý¾Ý´æ´¢¡£Visual Studio 2008 °üº¬ LINQ Ìṩ³ÌÐòµÄ³ÌÐò¼¯£¬ÕâЩ³ÌÐò¼¯Ö§³Ö½« LINQ Óë .NET Framework ¼¯ºÏ¡¢SQL Server Êý¾Ý¿â¡¢ADO.NET Êý¾Ý¼¯ºÍ XML ÎĵµÒ»ÆðʹÓá£
ÔÚ±¾Æª½²ÊöÀûÓÃLinqʵÏÖ¶ÔÊý¾Ý¿âµÄCRUD¹¦ÄÜ£¬Ò²¾ÍÊÇLinq to SQL£¬ÐèҪ˵Ã÷µÄÊÇLinq to SQLÖ»Ö§³ÖSQL ServerÊý¾Ý¿â£¬Linq to SQLÖ»ÊÇLinqµÄÒ»²¿·Ö¹¦ÄÜ¡£
ÓÃLinq to SQLÀ´²Ù×÷Êý¾Ý¿âȷʵ±ÈʹÓÃNHibernateÔÚ²Ù×÷ÉÏÒª·½±ãµÃ¶à£¬Í¨¹ýÏÂÃæµÄ²Ù×÷¶ÁÕßÒ²»áÌå»áµÃµ½£¬±Ï¾¹Õâ¸öÊÇ΢Èí¹Ù·½µÄ¶«¶«£¬Î¢Î¢Ö§³ÖµÄÁ¦¶È×ÔȻҪ´óЩ¡£
Ò»¡¢×¼±¸
Ê×ÏÈ£¬ÏòÏîÄ¿ÖÐÌí¼ÓLinq To SQLµÄÀ࣬ÈçÏÂͼËùʾ£º
ÔÚÃû³ÆÒ»À¸ÖÐÌîд½ÏÓѺõÄÃû×ÖÖ®ºó£¬È»ºóÏîÄ¿ÖоͻáÔö¼ÓÒ»¸öºó׺ΪdbmlµÄÎļþ£¬Ë«»÷Õâ¸öÎļþ¾Í»á½øÈëÉè¼ÆÊÓͼ£¬ÈçÏÂͼËùʾ£º
ÔÚ·þÎñÆ÷×ÊÔ´¹ÜÀíÖÐÕÒµ½ÏàÓ¦µÄÊý¾Ý
Ïà¹ØÎĵµ£º
¾Û¼¯Ë÷ÒýµÄÖØÒªÐÔºÍÈçºÎÑ¡Ôñ¾Û¼¯Ë÷Òý
¡¡¡¡ÔÚÉÏÒ»½ÚµÄ±êÌâÖУ¬±ÊÕßдµÄÊÇ£ºÊµÏÖСÊý¾ÝÁ¿ºÍº£Á¿Êý¾ÝµÄͨÓ÷ÖÒ³ÏÔʾ´æ´¢¹ý³Ì¡£ÕâÊÇÒòΪÔÚ½«±¾´æ´¢¹ý³ÌÓ¦ÓÃÓÚ“°ì¹«×Ô¶¯»¯”ϵͳµÄʵ¼ùÖÐʱ£¬±ÊÕß·¢ÏÖÕâµÚÈýÖÖ´æ´¢¹ý³ÌÔÚСÊý¾ÝÁ¿µÄÇé¿öÏ£¬ÓÐÈçÏÂÏÖÏó£º
1¡¢·ÖÒ³ËÙ¶ÈÒ»°ãά³ÖÔÚ1ÃëºÍ3ÃëÖ®¼ä¡£
2¡¢ÔÚ²éѯ×îºóһҳʱ£¬ ......
This has some predictable results that we can use for building queries. The root is always of the form (left = 1, right = 2 * (SELECT COUNT(*) from TreeTable)); leaf nodes always have (left + 1 = right); the BETWEEN predicate defines the subtrees; and so on. Here are some common queries that you can ......
ºÜ¶à¼¼Êõ°®ºÃÕߵĵçÄÔÉÏ×ÜÊǰ²×°Á˺ܶàÈí¼þ£¬°üÀ¨Ó¦ÓÃÈí¼þ¡¢¿ª·¢¹¤¾ßÈí¼þ¼°Êý¾Ý¿âÈí¼þ£¬µ«ÊÇËæ×Åʱ¼äµÄÁ÷ÊÅ£¬ÂýÂýµØµçÄÔÉÏ×°µÄÈí¼þÒѾ³¬³öÁ˵çÄÔ±¾ÉíËùÄÜ
³ÐÔØµÄÁ¿ÁË£¬Òò¶ø³öÏÖÁ˵çÄÔÔËÐÐËÙ¶ÈÂýµÈÎÊÌ⡣ͬʱ£¬Ò²ÓÐһЩµ¥Î»»ò¸öÈ˵ĵçÄÔÓÉÓÚ³ö³§Äê´úÓÐЩ¾ÃÔ¶£¬¼´Ê¹Ö»°²×°Ò»ÖÖ»ò¼«ÉÙÊýÈí¼þʱҲ»áÏÔʾ³öÔËÐÐËÙ¶ÈÂý
µÄÏÖÏó¡£ ......
ÍâÁª½Ó:ÍâÁª½Ó¿ÉÒÔÊÇ×óÏòÍâÁª½Ó¡¢ÓÒÏòÍâÁª½Ó»òÍêÕûÍⲿÁª½Ó¡£
ÔÚ from ×Ó¾äÖÐÖ¸¶¨ÍâÁª½Óʱ£¬¿ÉÒÔÓÉÏÂÁм¸×鹨¼ü×ÖÖеÄÒ»×éÖ¸¶¨£º
LEFT JOIN »ò LEFT OUTER JOIN;
×óÏòÍâÁª½ÓµÄ½á¹û¼¯°üÀ ......
Ö»ÐèÒªÔÚÅäÖÃÎļþÀï hibernate.show_sql=true
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
......