1.»º´æ¸ÅÊö
»º´æ(cache)ÔÚjavaÓ¦ÓóÌÐòÖÐÊÇÒ»×éÄÚ´æÖеļ¯ºÏʾÀý£¬Ëü±£´æ×ÅÓÀ¾ÃÐÔ´æ´¢Ô´(ÈçÓ²ÅÌÉϵÄÎļþ»òÊý¾Ý¿â)ÖÐÊý¾ÝµÄ±¸·Ý£¬ËüµÄ¶ÁдËٶȱȶÁдӲÅ̵ÄËٶȿ졣ӦÓóÌÐòÔÚÔËÐÐʱֱ½Ó¶Áд»º´æÖеÄÊý¾Ý£¬Ö»ÔÚÄ³Ð©ÌØ¶¨Ê±¿Ì°´ÕÕ»º´æÖеÄÊý¾ÝÀ´Í¬²½¸üÐÂÊý¾Ý´æ´¢Ô´¡£Èç¹û»º´æÖдæ·ÅµÄÊý¾ÝÁ¿·Ç³£´ó£¬Ò²»áÓÃÓ²ÅÌ×÷Ϊ»º´æµÄÎïÀí½éÖÊ
»º´æµÄ×÷ÓþÍÊǽµµÍÓ¦ÓóÌÐòÖ±½Ó¶ÁдÓÀ¾ÃÐÔÊý¾Ý´æ´¢Ô´µÄƵÂÊ£¬´Ó¶øÔöǿӦÓõÄÔËÐÐÐÔÄÜ
»º´æµÄʵÏÖ²»½öÐèÒª×÷ΪÎïÀí½éÖʵÄÓ²¼þ£¨Äڴ棩£¬Í¬Ê±»¹ÐèÒªÓÃÓÚ¹ÜÀí»º´æµÄ²¢·¢·ÃÎʺ͹ýÆÚµÈ²ßÂÔµÄÈí¼þ
2.»º´æ·¶Î§·ÖÀà
»º´æµÄ·¶Î§¾ö¶¨ÁË»º´æµÄÉùÃ÷ÖÜÆÚÒÔ¼°¿ÉÒÔ±»Ë·ÃÎÊ¡£×ܹ²·ÖÈýÀà
1£©ÊÂÎñ·¶Î§
ÊÂÎñ·¶Î§µÄ»º´æÖ»Äܱ»µ±Ç°ÊÂÎñ·ÃÎÊ,ÿ¸öÊÂÎñ¶¼Óи÷×ԵĻº´æ,»º´æÄÚµÄÊý¾Ýͨ³£²ÉÓÃÏ໥¹ØÁªµÄ¶ÔÏóÐÎʽ.»º´æµÄÉúÃüÖÜÆÚÒÀÀµÓÚÊÂÎñµÄÉúÃüÖÜÆÚ,Ö»Óе±ÊÂÎñ½áÊøÊ±,»º´æµÄÉúÃüÖÜÆÚ²Å»á½áÊø.ÊÂÎñ·¶Î§µÄ»º´æÊ¹ÓÃÄÚ´æ×÷Ϊ´æ´¢½éÖÊ,Ò»¼¶»º´æ¾ÍÊôÓÚÊÂÎñ·¶Î§.
2£©Ó¦Ó÷¶Î§£¨Ò²½Ð½ø³Ì·¶Î§£©
Ó¦ÓóÌÐòµÄ»º´æ¿ÉÒÔ±»Ó¦Ó÷¶Î§ÄÚµÄËùÓÐÊÂÎñ¹²Ïí·ÃÎÊ.»º´æµÄÉúÃüÖÜÆÚÒÀÀµÓÚÓ¦ÓõÄÉúÃüÖÜÆÚ,Ö»Óе±Ó¦ÓýáÊøÊ±,»º´æµÄÉúÃüÖÜÆÚ²Å»á½áÊø.Ó¦Ó÷¶Î§µÄ»º´æ¿ÉÒÔʹÓÃÄÚ´æ»òÓ²ÅÌ×÷Ϊ´æ´¢½éÖÊ,¶þ¼¶»º´æ¾ÍÊôÓÚÓ¦Ó÷¶Î§.
3£©¼¯Èº·¶Î§
ÔÚ¼¯Èº»·¾³ÖÐ,»º´æ±»Ò»¸ö»úÆ÷»ò¶à¸ö»úÆ÷µÄ½ø³Ì¹²Ïí,»º´æÖеÄÊý¾Ý±»¸´ÖƵ½¼¯Èº»·¾³ÖеÄÿ¸ö½ø³Ì½Úµã,½ø³Ì¼äͨ¹ýÔ¶³ÌͨÐÅÀ´±£Ö¤»º´æÖеÄÊý¾ÝµÄÒ»ÖÂ,»º´æÖеÄÊý¾Ýͨ³£²ÉÓöÔÏóµÄËÉÉ¢Êý¾ÝÐÎʽ.
¶Ô´ó¶àÊýÓ¦ÓÃÀ´Ëµ£¬Ó¦¸ÃÉ÷ÖØµØ¿¼ÂÇÊÇ·ñÐèҪʹÓü¯Èº·¶Î§µÄ»º´æ£¬ÒòΪ·ÃÎʵÄËٶȲ»Ò»¶¨»Ø±ÜÖ±½Ó·ÃÎÊÊý¾Ý¿âÊý¾ÝµÄËÙ¶È¿ìºÜ¶à
3.»º´æµÄ²¢·¢·ÃÎʲßÂÔ
µ±¶à¸ö²¢·¢µÄʧÎóͬʱ·ÃÎʳ־û¯²ãµÄ»º´æµÄÏàͬÊý¾Ýʱ£¬»áÒý·¢Æð²¢·¢ÎÊÌ⣬±ØÐë²ÉÓñØÒªµÄʧÎó¸ôÀë´ëÊ©
ÔÚ½ø³Ì·¶Î§»ò¼¯Èº·¶Î§µÄ»º´æ£¬»á³öÏÖ²¢·¢ÎÊÌ⣬Òò´Ë¿ÉÒÔÉ趨һÏÂËÄÖÖÀàÐ͵IJ¢·¢·ÃÎʲßÂÔ£¬Ã¿Ò»ÖÖ²ßÂÔ¶ÔÓ¦Ò»ÖÖÊÂÎñ¸ôÀë¼¶±ð¡£ÊÂÎñÐͲ¢·¢·ÃÎʲßÂÔÊÇÊÂÎñ¸ôÀë¼¶±ð×î¸ß£¬Ö»¶ÁÐ͵ĸôÀë¼¶±ð×îµÍ¡£ÊÂÎñ¸ôÀë¼¶±ðÔ½¸ß£¬²¢·¢ÐÔÄܾÍÔ½µÍ
¡¡1£©ÊÂÎñÐÍ£º½ö½öÔÚÊܹÜÀí»·¾³ÖÐÊÊÓá£ËüÌṩÁËRepeatable ReadÊÂÎñ¸ôÀë¼¶±ð¡£¶ÔÓÚ¾³£±»¶Áµ«ºÜÉÙÐ޸ĵÄÊý¾Ý£¬¿ÉÒÔ²ÉÓÃÕâÖÖ¸ôÀëÀàÐÍ£¬ÒòΪËü¿ÉÒÔ·ÀÖ¹Ôà¶ÁºÍ²»¿ÉÖØ¸´¶ÁÕâÀàµÄ²¢·¢ÎÊÌâ¡£
¡¡2£©¶ÁдÐÍ£ºÌṩÁËRead CommittedÊÂÎñ¸ôÀë¼¶±ð¡£½ö½öÔڷǼ¯ÈºµÄ»·¾³ÖÐÊÊÓ᣶ÔÓÚ¾³£±»¶Áµ«ºÜÉÙÐ޸ĵÄÊý¾Ý£¬¿ÉÒÔ²ÉÓÃÕâÖÖ¸ôÀëÀàÐÍ£¬ÒòΪËü¿ÉÒÔ·ÀÖ¹Ôà¶ÁÕâÀàµÄ²¢·¢ÎÊÌâ¡£
¡¡3£©·ÇÑϸñ¶ÁдÐÍ£º²»±£Ö¤»º´æÓëÊý¾Ý¿âÖÐÊý¾ÝµÄÒ»ÖÂÐÔ¡£Èç¹û´æÔÚÁ½¸öÊÂÎñͬʱ·ÃÎÊ»º´æÖÐÏàͬÊý¾ÝµÄ¿ÉÄÜ£¬±ØÐëΪ¸ÃÊý¾ÝÅäÖÃÒ»¸öºÜ¶ÌµÄÊý¾Ý¹ýÆÚʱ¼ä£¬´Ó¶ø¾¡Á¿±ÜÃâÔà¶Á¡£¶ÔÓÚ¼«ÉÙ±»Ð޸쬲¢ÇÒÔÊÐíż¶ûÔà¶ÁµÄÊý¾Ý£¬¿ÉÒÔ²ÉÓÃÕâÖÖ²¢·¢·ÃÎʲßÂÔ¡£ ¡¡¡¡
4£©Ö»¶ÁÐÍ£º¶ÔÓÚ´ÓÀ´²»»áÐ޸ĵÄÊý¾Ý£¬Èç²Î¿¼Êý¾Ý£¬¿ÉÒÔʹÓÃÕâÖÖ²¢·¢·ÃÎʲßÂÔ¡£
HibernateÖеĻº´æ
hibernateÖÐÌṩÁ½¼¶»º´æ£¬µÚÒ»¼¶±ðÊÇSession¼¶±ðµÄ»º´æ£¬ËüÊÇÊôÓÚÊÂÎñ·¶Î§µÄ»º´æ£¬µÚ¶þ¼¶±ðµÄ»º´æÊÇSessionFactory¼¶±ðµÄ»º´æ£¬ËüÊÇÊôÓÚ½ø³öÄØ¸ö·¶Î§»ò¼¯Èº·¶Î§µÄ»º´æ¡£ÕâÒ»¼¶±ðµÄ»º´æ¿ÉÒÔ½øÐÐÅäÖú͸ü¸Ä£¬²¢ÇÒ¿ÉÒÔ½øÐж¯Ì¬µÄ¼ÓÔØºÍÐ¶ÔØ¡£Hibernate»¹Îª²éѯ½á¹ûÌṩÁËÒ»¸ö²éѯ»º´æ£¬ËüÒÀÀµÓÚµÚ¶þ¼¶»º´æ
Ò»¼¶»º´æµÄ¹ÜÀí:
HibernateµÄÒ»¼¶»º´æÊÇÓÉSessionÌṩµÄ£¬Òò´ËËüÖ»´æÔÚÓÚSessionµÄÉúÃüÖÜÆÚÖУ¬µ±³ÌÐòµ÷ÓÃsave(),update(),saveorupdate()µÈ·½·¨ ¼°µ÷Óòéѯ½Ó¿Úlist,filter,iterateʱ£¬Èçsession»º´æÖл¹²»´æÔÚÏàÓ¦µÄ¶ÔÏó£¬Hibernate»á°Ñ¸Ã¶ÔÏó¼ÓÈëµ½Ò»¼¶»º´æÖУ¬
µ±Session¹Ø±ÕµÄʱºò¸ÃSessionËù¹ÜÀíµÄÒ»¼¶»º´æÒ²»áÁ¢¼´±»Çå³ý
HibernateµÄÒ»¼¶»º´æÊÇSessionËùÄÚÖõ쬲»Äܱ»Ð¶ÔØ£¬Ò²²»ÄܽøÐÐÈκÎÅäÖÃ
Ò»¼¶»º´æ²ÉÓõÄÊÇkey-valueµÄMap·½Ê½À´ÊµÏֵģ¬ÔÚ»º´æÊµÌå¶ÔÏóʱ£¬¶ÔÏóµÄÖ÷¹Ø¼ü×ÖIDÊÇMapµÄkey£¬ÊµÌå¶ÔÏó¾ÍÊǶÔÓ¦µÄÖµ¡£ËùÒÔ˵£¬Ò»¼¶»º´æÊÇÒÔʵÌå¶ÔÏóΪµ¥Î»½øÐд洢µÄ£¬ÔÚ·ÃÎʵÄʱºòʹÓõÄÊÇÖ÷¹Ø¼ü×ÖID
ËäÈ»£¬Hibernate¶ÔÒ»¼¶»º´æÊ¹ÓõÄÊÇ×Ô¶¯Î¬»¤µÄ¹¦ÄÜ£¬Ã»ÓÐÌṩÈκÎÅäÖù¦ÄÜ£¬µ«ÊÇ¿ÉÒÔͨ¹ýSessionÖÐËùÌṩµÄ·½·¨À´¶ÔÒ»¼¶»º´æµÄ¹ÜÀí½øÐÐÊÖ¹¤¸ÉÔ¤¡£SessionÖÐËùÌṩµÄ¸ÉÔ¤·½·¨°üÀ¨ÒÔÏÂÁ½ÖÖ
¡ñevict() £ºÓÃÓÚ½«Ä³¸ö¶ÔÏó´ÓSessionµÄÒ»¼¶»º´æÖÐÇå³ý
evict()·½·¨ÊÊÓÃÓÚÒÔ϶þÖÖÇé¿ö£º
£±£©²»ÐèÒª¸Ã¶ÔÏó½øÐÐͬ²½µÄÊý¾Ý¸üÐÂ
£²£©ÔÚÅúÁ¿½øÐиüÐÂÓëɾ³ýʱ£¬µ±¸üÐÂɾ³ýÿһ¸ö¶ÔÏóºó£¬ÒªÊͶԴ˶ÔÏóËùÕ¼ÓõÄÄڴ森
¡ñclear() £ºÓÃÓÚ½«Ò»¼¶»º´æÖеÄËùÓжÔÏóÈ«²¿Çå³ý¡£
ÔÚ½øÐдóÅúÁ¿Êý¾ÝÒ»´ÎÐÔ¸üеÄʱºò£¬»áÕ¼Ó÷dz£¶àµÄÄÚ´æÀ´»º´æ±»¸üеĶÔÏó¡£Õâʱ¾ÍÓ¦¸Ã½×¶ÎÐԵص÷ÓÃclear()·½·¨À´Çå¿ÕÒ»¼¶»º´æÖеĶÔÏ󣬿ØÖÆÒ»¼¶»º´æµÄ´óС£¬ÒÔ±ÜÃâ²úÉúÄÚ´æÒç³öµÄÇé¿ö¡£
Hibernate´óÅúÁ¿¸üÐÂʱ»º´æµÄ´¦Àí·½·¨:
(¼ÙÉèÎÒÃÇuser±íµÄageÓÐ5000Ìõ´óÓÚ0µÄ¼Ç¼,)
Session session =SessionFactory.openSession();
Transaction tx =session.beginTransaction();
Itertaor users=session.find("from User u where u.age>0").itertaor();//HSLÓï¾ä¾Í²»×ö½âÊÍÁË
while(user.hasNext()){
User user =(User)users.next();
user.setAge(user.getAge()+1);
//½«±¾Åú²åÈëµÄ¶ÔÏóÁ¢¼´Ð´ÈëÊý¾Ý¿â²¢ÊÍ·ÅÄÚ´æ
session.flush();
session.clear();
}
tx.commit();
session.close();
ÓÃHibernate´¦Àí´óÅúÊý¾Ýʱ..¶¼±ØÐëÏÈÖ´ÐÐ5000´ÎµÄupdateÓï¾ä,È»ºó²ÅÄܸüÐÂ5000¸öuser ¶ÔÏó..
ÕâÑù¾ÍÓ°Ïìµ½Á˲Ù×÷ÉϵÄÐÔÄÜ....ÔÚÏîÄ¿µ±ÎÒÃÇÓöµ½ÐÔÄÜÓë¿Õ¼äµÄÎÊÌâʱ,,,ÒªÒÔÐÔÄÜΪÖ÷..ÕâÒ²¾ÍÊÇ˵ҪÎþÉü¿Õ¼ä
ËùÒÔ³ÌÐò×îºÃÌø¹ýHibernate API ¶øÖ±½Óͨ¹ýJDBC APIÀ´Ö´À´...
ÎÒÃǸÄÒ»ÏÂÉÏÃæµÄ´úÂë:
Session session=SessionFactory.openSession();
Transaction tx =session.beginTransaction();
Connection conn =session.connection();
PreparedStatement pstmt = conn.prepareStatement("update users set age=age+1 "+"where age >0");
pstmt.executeUpdate();
tx.commit();
Ëä˵ÕâÊÇͨ¹ýJDBC API¸ã×÷µÄ..µ«±¾ÖÊÉÏ»¹ÊÇͨ¹ýHibernater TransactionµÄÊÂÎñÕâ¸ö½Ó¿ÚÀ´ÉùÃ÷ÊÂÎñµÄ±ß½çµÄ...
Æäʵ×îºÃµÄ½â¾ö·½·¨¾ÍÊÇÒÔ´´½¨´æ´¢¹ý³Ì,,ÓõײãµÄÊý¾Ý¿âÔËÐÐ.