ÀÖÓãµç¾º

½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

JavaÅàѵʵս½Ì³ÌÖ®HibernateʹÓÃOracleÊý¾Ý¿âÓöµ½µÄ¼¸¸öÎÊÌâ

¸üÐÂʱ¼ä:2015Äê12ÔÂ29ÈÕ13ʱ22·Ö À´Ô´:ÀÖÓã²¥¿ÍJavaÅàѵѧԺ ä¯ÀÀ´ÎÊý:

 
ǰÑÔ
Hibernate×÷Ϊһ¸ö³ÉÊìµÄ³Ö¾Ã²ã½â¾ö·½°¸£¬Í¨¹ý¼òµ¥µÄÅäÖ㬿ÉÒÔÔÚ²»ÐÞ¸ÄÔ´ÂëµÄÇé¿öÏ£¬ÎÞ·ìµÄÔÚ²»Í¬µÄÊý¾Ý¿âÉÏÔËÐС£¾¡¹ÜÈç´Ë£¬Ê¹Óò»Í¬µÄÊý¾Ý¿âÈÔÈ»»á³öÏÖһЩÎÊÌ⣬±ÈÈç±¾ÎÄÒªÌÖÂÛµÄOracleÖеÄÎÊÌâ¡£
 
1.   HibernateÎÞ·¨´´½¨hibernate_sequenceµÄÎÊÌâ
´íÎóÌáʾ£º
 
ÎÊÌâ·ÖÎö£º
´Ó´íÎóÌáʾÉÏ¿´£¬²éѯÓï¾äûÓÐÕÒµ½hibernate_sequenceÕâ¸öÐòÁС£µ½OracleÊý¾Ý¿âÖв鿴£¬¹ûȻûÓС£°´µÀÀí˵£¬hibernateÓ¦¸ÃÔÚOracleÖÐ×Ô¶¯Éú³ÉÕâ¸öÐòÁУ¬ÄÇΪʲôûÓÐÉú³ÉÄØ£¿Ô­ÒòÖ÷ÒªÓÐÁ½¸ö£º
1.hibernateµÄºËÐÄÅäÖÃÖÐûÓÐÉèÖÃ×Ô¶¯½¨¶ÔÏóµÄÊôÐÔ£¬µ¼ÖÂÎÞ·¨×Ô¶¯½¨Á¢ÐòÁУº
<property name="hibernate.hbm2ddl.auto">update</property>
 
2.ÆäËûÓû§´æÔÚhibernate_sequenceÕâ¸öÐòÁУ¬µ¼Öµ±Ç°Óû§²»ÔÙ´´½¨¸ÃÐòÁС£
Ô­Òò£º
hibernateÔÚÆô¶¯Ê±¼´ÐèҪȥ¼ì²âËùÒª´´½¨µÄÐòÁÐÊÇ·ñ´æÔÚ£¬Èç¹û´æÔÚ£¬Ôò²»ÔÙ´´½¨´ËÐòÁС£ÔÚijЩÇé¿öÏ£¬hibernateÄܹ»Ì½²âµ½ÆäËüÓû§Ëù´´½¨µÄͬÃûÐòÁУ¬¶ø±»ÈÏΪ²»ÔÙÐèÒª´´½¨ÐòÁУ¬ÕâʱºòÈç¹û½øÐб£´æÊý¾ÝµÄ²Ù×÷£¬¾Í»áÒòΪÔÚµ±Ç°Óû§ÏÂÕÒ²»µ½¸ÃÐòÁдӶøµ¼Ö³ö´í¡£
Òª½â¾öÕâ¸öÎÊÌâµÄÊ×Òª·½·¨ÊÇÐèÒªÕÒµ½hibernateÅжÏÖ¸¶¨ÐòÁÐÊÇ·ñ´æÔڵķ½·¨£¬ÔÚhibernateµÄdialetÖУ¬È¡¾öÓÚgetQuerySequencesStringÕâ¸ö·½·¨£¬´Ë·½·¨·µ»ØÁ˲éѯËùÓÐÐòÁеķ½·¨¡£
HibernateÖеÄÓëOracleÏà¹ØdialetÒ»°ãÅäÖÃΪOracle10gDialect¡¢Oracle9iDialect¡¢Oracle8iDialect¡£´ÓÔ´ÂëÎÒÃÇ¿ÉÒÔ¿´µ½ËûÃÇÖ®¼äÊǼ̳йØÏµ£¬È磺Oracle10gDialect extend Oracle9iDialect extend Oracle8iDialect extend Dialet¡£Í¨¹ýÔ´´úÂëÎÒÃÇ¿ÉÒÔ¿´³ö£¬¸Ã·½·¨Ö»ÊÇÔÚOracle8iDialectÖнøÐÐÁ˸²Ð´£¬Æä×ÓÀà¶¼ÑØÓÃÁ˸ÃʵÏÖ¡£ÊµÏÖ´úÂëÈçÏ£º
public String getQuerySequencesString() {
       return    " select sequence_name from all_sequences"
              + "  union"
              + " select synonym_name"
              + "   from all_synonyms us, all_sequences asq"
              + "  where asq.sequence_name = us.table_name"
              + "    and asq.sequence_owner = us.table_owner";
    }
´Ó´úÂë·ÖÎö¿´£¬ËüÊÇ´Óall_sequenceÖÐѰÕÒËùÄÜÕÒµ½µÄsequence£¬¶øµ±Ç°Óû§ÄÜÕÒµ½µÄsequenceÈ«ÔÚÓÚµ±Ç°Óû§ÄÜÓжà´óµÄȨÏÞ£¬ÒÔ¼°¾ßÌåµÄoracle jdbcʵÏÖ¡£ÔÚÕâÖÖÇé¿öÏ£¬Èç¹ûµ±Ç°Óû§ÓµÓÐdbaȨÏÞ£¨¿ª·¢Ê±ºò£¬¾­³£¸øÒ»¸öÓû§ÊÚdbaȨÏÞ£©»òÕßÓÉÓÚÆäËüijÖÖÔ­Òò£¬¾ÍÄܹ»ÕÒµ½ÆäËûÓû§µÄsequenceÁË¡£¶øÈç¹ûÆäËûÓû§Ò²´´½¨ÁËÒ»¸ö½Ðhibernate_sequenceµÄsequence£¬ÄÇhibernateÔÚµ±Ç°Óû§¾Í²»ÄÜÔÙ´´½¨sequenceÁË¡£
 
ÖªµÀÁËÕâ¸öÔ­Òòºó£¬ÈçºÎ½â¾öÄØ£¿
ÎÒÃÇ¿ÉÒÔ´´½¨Ò»¸öеÄOracleDialect£¬Ö±½Ó¼Ì³ÐÓÚOracle10gDialect£¬²¢ÔÚеÄÀàÖи²¸ÇgetQuerySequencesString·½·¨£¬½«ÆäÖеÄsqlÓï¾ä¸ÄΪ´Óuser_sequences£¨¼´µ±Ç°Óû§µÄsequence¿Õ¼ä£©ÖÐѰÕÒÏàÓ¦µÄÐòÁУ¬ÕâÑù¾Í²»»áѰÕÒµ½ÆäËüÓû§µÄÐòÁÐÁË¡£²Î¿¼´úÂëÈçÏ£º
public class Oracle10gDialectEx extends Oracle10gDialect {
public String getQuerySequencesString() {
        return "select sequence_name from user_sequences";
    }
}
 
»¹Óиö½â¾ö°ì·¨£¬¾ÍÊÇÈ¥µô¸ÃOracleÓû§µÄ¿çÓû§·ÃÎʵÄȨÏÞ£¬Èçselect any tableµÄȨÏÞ»òdba½ÇÉ«¡£
 
 
2.   ʹÓÃhibernateÉú³É±í²»ÄÜÕýÈ·´´½¨±íµÄÎÊÌâ
ÎÊÌ⣺
hbm2ddl.autoÅäÖóÉupdateʱ£¬·¢ÏÖhibernate²¢Ã»Óа´ÕÕĬÈϵÄÉú³É¹æÔòÉú³ÉÏàÓ¦µÄÊý¾Ý±íÐÅÏ¢
·ÖÎö·¢ÏÖ£¬ÕâÀïÐèÒªÒýÓõıíp_menuÔÚÁíÒ»¸öÓû§¿Õ¼äÀïÒѾ­´æÔÚÁË£¬¶øhibernateÔÚ´´½¨±íʱ£¬ÔÚÁíÒ»¸öÓû§¿Õ¼äÖÐÕÒµ½ÁËÕâ¸ö±í£¬¹Ê²»ÔÙÔÚµ±Ç°µÄÓû§¿Õ¼äÖд´½¨Õâ¸ö±íÁË¡£¶øÔÚ´´½¨¹ØÁª±íʱ£¬ÓÉÓÚ¹ØÁªµÄÊDZ¾Óû§¿Õ¼äµÄ±í£¬¹ÊÓд˴íÎó¡£
hibernateʹÓÃÁËjdbcĬÈϵÄdatabasemetaÀ´Ñ°ÕÒÏàÓ¦±íÊý¾ÝÐÅÏ¢£¬µ±Ê¹ÓÃĬÈϵÄÅäÖÃʱ£¬ÓÉÓÚijÖÖÔ­Òò£¨²¢²»ÊÇÿ´Î¶¼ÄÜ·¢Éú£¬È¡¾öÓÚÊý¾Ý¿â±¾ÉíÒÔ¼°ÏàÓ¦µÄÇý¶¯£©¡£µ±Ê¹Óõ±Ç°Óû§Á¬½Óµ½Êý¾Ý¿âʱ£¬Ê¹ÓÃdatabasemetaѰÕÒÊý¾Ý¿â±íÐÅϢʱ£¬»á²éѯ³öÆäËüÓû§µÄÊý¾Ý±íÐÅÏ¢£¨¼´Ê¹µ±Ç°Óû§Ã»ÓÐÏàÓ¦µÄȨÏÞ£©¡£
 
Á½ÖÖ½â¾ö·½°¸£º
1.ÔÚhibernateºËÐÄÅäÖÃÖÐÅäÖÃÒ»¸öÊôÐÔ£º
<property name="hibernate.default_schema">µ±Ç°Á¬½ÓÓû§</property>
2.ÔÚhbmÎļþÅäÖÃÖеÄclassÔªËØÖÐÖ¸¶¨schema=""µÄÊôÐÔ
<class name="class"  table="table" schema="µ±Ç°Á¬½ÓÓû§">
3.È¥µô¸ÃOracleÓû§µÄ¿çÓû§·ÃÎʵÄȨÏÞ£¬Èçselect any tableµÄȨÏÞ
 
 
3.   SSHÆô¶¯ÖеÄÊä³öÈÕÖ¾ÖÐÓÐcreateClobµÄinfoÐÅÏ¢µÄÎÊÌâ
 
ÔÚʹÓÃSSH+OracleÆô¶¯µÄʱºò£¬¿ØÖÆÌ¨»á´òÓ¡£º
INFO: HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
Èç¹ûÊÇʹÓõÄOracle10G£¬ÊµÌåÀàʹÓÃÁËClob×ֶεÄʱºò£¬»áÅ׳öÕâ¸öÐÅÏ¢¡£
Èç¹ûʹÓõÄÊÇOracle11G£¬ÊµÌåÀàʹÓÃÁ˸´ÔÓµÄÊý¾ÝÀàÐ͵Äʱºò£¬Ò²»áÅ׳öÕâ¸öÐÅÏ¢¡£
·ÖÎö£º
Õâ¸ö¶«Î÷Ö»ÊǸö INFO ¼¶±ðµÄ£¬Ò²¾ÍÊÇ˵½ö½öÊÇÌáÐÑ£¬Î޹ؽôÒªµÄ¡£µ«×ܾõµÄ²»Ë¬¡£ÈçºÎ½â¾öÄØ£¿
´ÓÇý¶¯ÉÏѰÕÒ½â¾ö·½°¸£º
ʹÓÃOracle10G£¬½«Ä¬ÈϵÄJDBCÇý¶¯ojdbc14Éý¼¶Îª¸ü¸ß°æ±¾£¬ÈçOracle11GµÄojdbc6.jarµÄ°æ±¾¡£
´ÓhibernateÉÏѰÕÒ½â¾ö·½°¸£º
ÐÞ¸ÄhibernateÅäÖÃÏîhibernate.temp.use_jdbc_metadata_defaults=false¡£
ÁíÍ⣺Hibernate4µÄ¹Ù·½×ÊÁÏÀï˵11gºÍ10g¶¼ÊÇOracle10gDialect£¬·½ÑÔͨÓã¬Õâ¸öûɶӰÏì¡£
ÍøÉϲο¼£ºhttp://stackoverflow.com/questions/4588755/hibernate-disabling-contextual-lob-creation-as-createclob-method-threw-error
 
 
±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍJavaÅàѵѧԺËùÓУ¬»¶Ó­×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
×÷ÕߣºÀÖÓã²¥¿ÍJavaÅàѵѧԺ
Ê×·¢£ºhttp://www.itcast.cn/javaee 

0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿