Java

±¾ÀàÔĶÁTOP10

¡¤Ê¹ÓÃMyEclipse¿ª·¢Struts¿ò¼ÜµÄHello World!(¼Ïñ1)
¡¤hibernateÅäÖñʼÇ
¡¤AOP±à³ÌÈëÃÅ--Javaƪ
¡¤linuxÏÂTomcat 5.0.20 Óë Apache 2 °²×°/¼¯³É/ÅäÖÃ
¡¤ÔÚwin2003ÏÂÕûºÏÁËÕûºÏTomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
¡¤¹¹½¨LinuxÏÂIDE»·¾³--Eclipseƪ
¡¤Jsp Á¬½Ó mySQL¡¢Oracle Êý¾Ý¿â±¸Íü(Windowsƽ̨)
¡¤ASP¡¢JSP¡¢PHP ÈýÖÖ¼¼Êõ±È½Ï
¡¤Tomcat5.5.9µÄ°²×°ÅäÖÃ
¡¤AWT GUI Éè¼Æ±Ê¼Ç(¶þ)

¡ú ·ÖÀർº½
VCÓïÑÔDelphi
VBÓïÑÔASP
PerlJava
ScriptÊý¾Ý¿â
ÆäËûÓïÑÔÓÎÏ·¿ª·¢
Îļþ¸ñÊ½ÍøÕ¾ÖÆ×÷
Èí¼þ¹¤³Ì.NET¿ª·¢
[תÌù] HibernateÈëÃÅ - »ù´¡ÅäÖÃ

×÷ÕߣºÎ´Öª À´Ô´£ºÔ¹âÈí¼þÕ¾ ¼ÓÈëʱ¼ä£º2005-2-28¡¡Ô¹âÈí¼þÕ¾

 HibernateÅäÖÃÎļþ¿ÉÒÔÓÐÁ½ÖÖ¸ñʽ£¬Ò»ÖÖÊÇhibernate.properties£¬ÁíÒ»ÖÖÊÇhibernate.cfg.xml¡£ºóÕßÉÔ΢·½±ãһЩ£¬µ±Ôö¼ÓhbmÓ³ÉäÎļþµÄʱºò£¬¿ÉÒÔÖ±½ÓÔÚhibernate.cfg.xmlÀïÃæÔö¼Ó£¬²»±ØÏñhibernate.properties±ØÐëÔÚ³õʼ»¯´úÂëÖмÓÈë¡£µ«²»¹ÜÔõô˵£¬Á½ÖÖµÄÅäÖÃÏî¶¼ÊÇÒ»ÑùµÄ£¬ÏÂÃæÏêϸ½éÉÜ£º

ÔÚHibernateµÄsrcĿ¼ÏÂÓÐÒ»¸öhibernate.propertiesÄ£°å£¬ÎÒÃDz»±Ø×Ô¼º´Óͷд£¬ÐÞ¸ÄÄ£°å¾Í¿ÉÒÔÁË

´úÂë:
hibernate.query.substitutions true 1, false 0, yes 'Y', no 'N'

Õâ¸öÅäÖÃÒâ˼Êǵ±ÄãÔÚHibernateÀïÃæÊäÈëtrueµÄʱºò£¬Hibernate»áת»¯Îª0²åÈëÊý¾Ý¿â£¬µ±ÄãÔÚHibernateÀïÃæÊäÈëfalseµÄʱºò£¬Hibernate»áת»¯Îª1²åÈëÊý¾Ý¿â£¬ºóÃæµÄY£¬NͬÀí¡£¶ÔÓÚijЩÊý¾Ý¿â£¬ÀýÈçOracleÀ´Ëµ£¬Ã»ÓÐbooleanÊý¾ÝÀàÐÍ£¬¾ÍÊDzÉÓÃ1´ú±í true£¬0´ú±ífalse£¬Òò´ËʹÓÃÕâ¸öÅäÖÃÔÚHibernateÀïÃæÖ±½ÓÓÃtrue/false»á·Ç³£Ö±¹Û¡£

´úÂë:
hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class org.gjt.mm.mysql.Driver
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql:///test
hibernate.connection.username root
hibernate.connection.password

ÕâÊÇÒ»¸öÁ¬½ÓMySQLÊý¾Ý¿âµÄÀý×Ó£¬ºÜÖ±¹Û£¬²»±Ø½âÊÍ£¬²»Í¬µÄÊý¾Ý¿âµÄÁ¬½Ó²ÎÊýÄ£°åÖÐÈ«²¿¸ø³öÁË¡£

´úÂë:
hibernate.connection.pool_size 1
hibernate.statement_cache.size 25

ÕâÊÇHibernate×Ô´øµÄÁ¬½Ó³ØµÄÅäÖòÎÊý£¬ÔÚĬÈÏÇé¿öϽ«²ÉÓá£ÒâÒåºÜÖ±¹Û£¬²»¶à½âÊÍ¡£Ö»ÊÇÌáÐÑÒ»µã£¬HibernateÕâ¸öÁ¬½Ó³ØÊǷdz£Ô­Ê¼·Ç³£¼òµ¥µÄÁ¬½Ó³Ø£¬Èç¹ûÄãÔÚÏîÄ¿ÖÐÓ**ibernateµÄ»°£¬½¨ÒéÄãÊ×Ñ¡App ServerµÄÁ¬½Ó³Ø£¬´ÎÑ¡Hibernate´øµÄDBCPÁ¬½Ó³Ø¡£×Ô´øµÄÁ¬½Ó³ØÓ¦¸Ã×öΪĩѡ¡£

Èç¹ûÄã²ÉÓÃDBCPÁ¬½Ó³Ø£¬³ýÁËÒªÅäÖÃDBCPÁ¬½Ó³ØÒÔÍ⣬»¹ÐèҪȡÏûµôÏÂÐеÄ×¢ÊÍ£º

´úÂë:
hibernate.connection.provider_class net.sf.hibernate.connection.DBCPConnectionProvider

ÆäËüµÄÁ¬½Ó³ØÍ¬Àí¡£

Èç¹û²ÉÓÃApp ServerµÄÁ¬½Ó³Ø£¬¼ÙÉèApp ServerÁ¬½Ó³ØµÄDataSourceµÄJNDIÃû³ÆÎª"mypool"µÄ»°£¬ÅäÖÃÓ¦¸ÃÈçÏ£º

´úÂë:
hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.datasource mypool
hibernate.connection.provider_class net.sf.hibernate.connection.DatasourceConnectionProvider

ÆäËü²ÎÊý¾Í²»±ØÐ´ÁË£¬ÒòΪÒѾ­ÔÚApp ServerÅäÖÃÁ¬½Ó³ØµÄʱºòÖ¸¶¨ºÃÁË¡£

Èç¹ûÄã²»ÊÇÔÚApp Server»·¾³ÖÐʹÓ**ibernate£¬ÀýÈçÔ¶³Ì¿Í»§¶Ë³ÌÐò£¬µ«ÊÇÄãÓÖÏëÓÃApp ServerµÄÊý¾Ý¿âÁ¬½Ó³Ø£¬ÄÇôÄ㻹ÐèÒªÅäÖÃJNDIµÄ²ÎÊý£¬ÀýÈçHibernateÁ¬½ÓÔ¶³ÌWeblogicÉϵÄÊý¾Ý¿âÁ¬½Ó³Ø£º

´úÂë:
hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.datasource mypool
hibernate.connection.provider_class net.sf.hibernate.connection.DatasourceConnectionProvider
hibernate.jndi.class weblogic.jndi.WLInitialContextFactory
hibernate.jndi.url t3://servername:7001/

×îºó£¬Èç¹ûÄãÐèÒªÔÚEJB»òÕßJTAÖÐʹÓ**ibernate£¬ÐèҪȡÏûÏÂÐеÄ×¢ÊÍ£º

´úÂë:
hibernate.transaction.factory_class net.sf.hibernate.transaction.JTATransactionFactory

ÔÓÏîÅäÖãº

´úÂë:
hibernate.show_sql false

ÊÇ·ñ½«Hibernate·¢Ë͸øÊý¾Ý¿âµÄsqlÏÔʾ³öÀ´£¬ÕâÊÇÒ»¸ö·Ç³£·Ç³£ÓÐÓô¦µÄ¹¦ÄÜ¡£µ±ÄãÔÚµ÷ÊÔHibernateµÄʱºò£¬È**ibernate´òÓ¡sqlÓï¾ä£¬¿ÉÒÔ°ïÖúÄãѸËÙ½â¾öÎÊÌâ¡£

´úÂë:
#hibernate.connection.isolation 4

Ö¸¶¨Êý¾Ý¿âµÄ¸ôÀë¼¶±ð£¬ÍùÍù²»Í¬µÄÊý¾Ý¿âÓÐ×Ô¼º¶¨ÒåµÄ¸ôÀë¼¶±ð£¬Î´±ØÊÇHibernateµÄÉèÖÃËùÄܸü¸ÄµÄ£¬ËùÒÔÒ²²»±ØÈ¥¹ÜËüÁË¡£

´úÂë:
hibernate.jdbc.fetch_size 50
hibernate.jdbc.batch_size 25

ÕâÁ½¸öÑ¡Ïî·Ç³£·Ç³£·Ç³£ÖØÒª£¡£¡£¡½«ÑÏÖØÓ°ÏìHibernateµÄCRUDÐÔÄÜ!
´úÂë:
C = create, R = read, U = update, D = delete

Fetch Size ÊÇÉ趨JDBCµÄStatement¶ÁÈ¡Êý¾ÝµÄʱºòÿ´Î´ÓÊý¾Ý¿âÖÐÈ¡³öµÄ¼Ç¼ÌõÊý¡£ÀýÈçÒ»´Î²éѯ1ÍòÌõ¼Ç¼£¬¶ÔÓÚOracleµÄJDBCÇý¶¯À´Ëµ£¬ÊDz»»á 1´ÎÐÔ°Ñ1ÍòÌõÈ¡³öÀ´µÄ£¬¶øÖ»»áÈ¡³öFetch SizeÌõÊý£¬µ±¼Í¼¼¯±éÀúÍêÁËÕâЩ¼Ç¼ÒÔºó£¬ÔÙÈ¥Êý¾Ý¿âÈ¡Fetch SizeÌõÊý¾Ý¡£Òò´Ë´ó´ó½ÚÊ¡ÁËÎÞνµÄÄÚ´æÏûºÄ¡£µ±È»Fetch SizeÉèµÄÔ½´ó£¬¶ÁÊý¾Ý¿âµÄ´ÎÊýÔ½ÉÙ£¬ËÙ¶ÈÔ½¿ì£»Fetch SizeԽС£¬¶ÁÊý¾Ý¿âµÄ´ÎÊýÔ½¶à£¬ËÙ¶ÈÔ½Âý¡£ÕâÓеãÏñƽʱÎÒÃÇд³ÌÐòдӲÅÌÎļþÒ»Ñù£¬ÉèÁ¢Ò»¸öBuffer£¬Ã¿´ÎдÈëBuffer£¬µÈBufferÂúÁËÒÔºó£¬Ò»´ÎдÈëÓ²ÅÌ£¬µÀÀíÏàͬ¡£

OracleÊý¾Ý¿âµÄJDBCÇý¶¯Ä¬ÈϵÄFetch Size=10£¬ÊÇÒ»¸ö·Ç³£±£ÊصÄÉ趨£¬¸ù¾ÝÎҵIJâÊÔ£¬µ±Fetch Size=50µÄʱºò£¬ÐÔÄÜ»áÌáÉý1±¶Ö®¶à£¬µ±Fetch Size=100£¬ÐÔÄÜ»¹ÄܼÌÐøÌáÉý20%£¬Fetch Size¼ÌÐøÔö´ó£¬ÐÔÄÜÌáÉýµÄ¾Í²»ÏÔÖøÁË¡£Òò´ËÎÒ½¨ÒéʹÓÃOracleµÄÒ»¶¨Òª½«Fetch SizeÉèµ½50¡£

²»¹ý²¢²»ÊÇËùÓеÄÊý¾Ý¿â¶¼Ö§³ÖFetch SizeÌØÐÔ£¬ÀýÈçMySQL¾Í²»Ö§³Ö¡£MySQL¾ÍÏñÎÒÉÏÃæËµµÄÄÇÖÖ×µÄÇé¿ö£¬Ëû×ÜÊÇһϾͰÑ1ÍòÌõ¼Ç¼Íêȫȡ³öÀ´£¬ÄÚ´æÏûºÄ»á·Ç³£·Ç³£¾ªÈË£¡Õâ¸öÇé¿ö¾ÍûÓÐʲôºÃ°ì·¨ÁË

Batch SizeÊÇÉ趨¶ÔÊý¾Ý¿â½øÐÐÅúÁ¿É¾³ý£¬ÅúÁ¿¸üкÍÅúÁ¿²åÈëµÄʱºòµÄÅú´Î´óС£¬ÓеãÏ൱ÓÚÉèÖÃBuffer»º³åÇø´óСµÄÒâ˼¡£Batch SizeÔ½´ó£¬ÅúÁ¿²Ù×÷µÄÏòÊý¾Ý¿â·¢ËÍsqlµÄ´ÎÊýÔ½ÉÙ£¬ËٶȾÍÔ½¿ì¡£ÎÒ×öµÄÒ»¸ö²âÊÔ½á¹ûÊǵ±Batch Size=0µÄʱºò£¬Ê¹Ó**ibernate¶ÔOracleÊý¾Ý¿âɾ³ý1ÍòÌõ¼Ç¼ÐèÒª25Ã룬Batch Size = 50µÄʱºò£¬É¾³ý½ö½öÐèÒª5Ã룡£¡£¡¿É¼ûÓжàô´óµÄÐÔÄÜÌáÉý£¡ºÜ¶àÈË×öHibernateºÍJDBCµÄ²åÈëÐÔÄܲâÊÔ»áÆæ¹ÖµÄ·¢ÏÖHibernateËÙ¶ÈÖÁÉÙÊÇJDBCµÄÁ½±¶£¬¾ÍÊÇÒòΪ HibernateʹÓÃÁËBatch Insert£¬¶øËûÃÇдµÄJDBCûÓÐʹÓÃBatchµÄÔµ¹Ê¡£ÒÔÎҵľ­ÑéÀ´¿´£¬OracleÊý¾Ý¿â Batch Size = 30 µÄʱºò±È½ÏºÏÊÊ£¬50Ò²²»´í£¬ÐÔÄÜ»á¼ÌÐøÌáÉý£¬50ÒÔÉÏ£¬ÐÔÄÜÌáÉýµÄ·Ç³£Î¢Èõ£¬·´¶øÏûºÄÄÚ´æ¸ü¼Ó¶à£¬¾ÍûÓбØÒªÁË¡£

´úÂë:
#hibernate.jdbc.use_scrollable_resultset true

É趨ÊÇ·ñ¿ÉÒÔʹÓÃJDBC2.0¹æ·¶µÄ¿É¹ö¶¯½á¹û¼¯£¬Õâ¶ÔHibernateµÄ·ÖÒ³ÏÔʾÓÐÒ»¶¨µÄ×÷Óã¬Ä¬ÈϾͺÃÁË¡£

´úÂë:
#hibernate.cglib.use_reflection_optimizer false

ĬÈÏ´ò¿ª£¬ÆôÓÃcglib·´ÉäÓÅ»¯¡£cglibÊÇÓÃÀ´ÔÚHibernateÖж¯Ì¬Éú³ÉPO×Ö½ÚÂëµÄ£¬´ò¿ªÓÅ»¯¿ÉÒÔ¼Ó¿ì×Ö½ÚÂë¹¹ÔìµÄËÙ¶È¡£

²»¹ý£¬µ±ÄãÔÚµ÷ÊÔ³ÌÐò¹ý³ÌÖУ¬ÌرðÊǺÍproxy£¬lazy loadingÏà¹ØµÄÓ¦ÓÃÖУ¬´úÂë³ö´í£¬µ«Êdzö´íÌáʾÐÅÏ¢ÓÐÓïÑɲ»Ï꣬ÄÇôÄã¿ÉÒÔ°ÑcglibÓÅ»¯¹Øµô£¬ÕâÑùHibernate»áÊä³ö±È½ÏÏêϸµÄµ÷ÊÔÐÅÏ¢£¬°ïÖúÄãdebug¡£



Ïà¹ØÎÄÕ£º

Ïà¹ØÈí¼þ£º