<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0

    Hibernate訪問多個數據庫的設計思路:利用 Hibernate中config = new Configuration().configure(configFile);可以加載不同數據庫配置信息的原理,編寫一個數據庫操作類,再編寫一個數據庫管理程序[map],將加載的數據庫連接實例put早數據庫管理程序中,具體實現見下面:

    Hibernate訪問多個數據庫步驟一:hibernate配置文件

    localhost.cfg.xml

    1. < ?xml version="1.0" encoding="utf-8"?>
    2. < !DOCTYPE hibernate-configuration
    3. ???? PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    4. ???? "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    5. < hibernate-configuration>
    6. ????< session-factory >
    7. ??< !-- local connection properties -->
    8. ??< property name="hibernate.connection.url">jdbc:mysql://localhost:3306/bookshop?zeroDateTimeBehavior=convertToNull< /property>
    9. ??< property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver< /property>
    10. ??< property name="hibernate.connection.username">root< /property>
    11. ??< property name="hibernate.connection.password">12345678< /property>
    12. ??< !-- property name="hibernate.connection.pool_size">< /property -->
    13. ??< !-- dialect for MySQL -->
    14. ????????< property name="dialect">org.hibernate.dialect.MySQLDialect< /property>
    15. ????????< property name="hibernate.show_sql">true< /property>
    16. ????????< property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory< /property>????????
    17. ????????< property name="hbm2ddl.auto">update< /property>
    18. ?????< mapping resource="org/jskyme/data/local/po/Shop.hbm.xml"/>
    19. ????< /session-factory>
    20. < /hibernate-configuration>

    data_server.cfg.xml

    1. < ?xml version="1.0" encoding="utf-8"?>
    2. < !DOCTYPE hibernate-configuration
    3. ???? PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    4. ???? "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    5. < hibernate-configuration>
    6. ????< session-factory >
    7. ??< !-- local connection properties -->
    8. ??< property name="hibernate.connection.url">jdbc:mysql://192.168.0.10:3306/bookshop?zeroDateTimeBehavior=convertToNull< /property>
    9. ??< property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver< /property>
    10. ??< property name="hibernate.connection.username">root< /property>
    11. ??< property name="hibernate.connection.password">12345678< /property>
    12. ??< !-- property name="hibernate.connection.pool_size">< /property -->
    13. ??< !-- dialect for MySQL -->
    14. ????????< property name="dialect">org.hibernate.dialect.MySQLDialect< /property>
    15. ????????< property name="hibernate.show_sql">true< /property>
    16. ????????< property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory< /property>????????
    17. ????????< property name="hbm2ddl.auto">update< /property>
    18. ?????< mapping resource="org/jskyme/data/local/po/Shop.hbm.xml"/>
    19. ????< /session-factory>
    20. < /hibernate-configuration>

    Hibernate訪問多個數據庫步驟二:數據庫訪問類:

    數據庫管理類:DataBaseManager

    1. package org.jskyme.hibernate.util;
    2. import java.util.HashMap;
    3. public class DataBaseManager extends HashMap {
    4. private static final long serialVersionUID = 6491666983237498097L;
    5. private static DataBaseManager inst = new DataBaseManager();
    6. public static DataBaseManager getInst() {
    7. ??return inst;
    8. }
    9. public SessionManager get(Object key) {
    10. ??return (SessionManager) super.get(key);
    11. }
    12. @Override
    13. public Object put(Object key, Object value) {
    14. ??return super.put(key, value);
    15. }
    16. public static void setInst(DataBaseManager inst) {
    17. ?? DataBaseManager.inst = inst;
    18. }
    19. }

    Hibernate連接數據庫操作類:

    1. package org.jskyme.hibernate.util;
    2. import java.util.List;
    3. import org.hibernate.Criteria;
    4. import org.hibernate.Query;
    5. import org.hibernate.SQLQuery;
    6. import org.hibernate.Session;
    7. import org.hibernate.SessionFactory;
    8. import org.hibernate.Transaction;
    9. import org.hibernate.cfg.Configuration;
    10. public final class SessionManager {
    11. private Configuration config;
    12. private SessionFactory sessionFactory;
    13. private Session session;
    14. public Criteria createCriteria(Class persistentClass) {
    15. ??return session.createCriteria(persistentClass);
    16. }
    17. private void buildSession() {
    18. ?? sessionFactory = config.buildSessionFactory();
    19. ?? session = sessionFactory.openSession();
    20. }
    21. public SessionManager(String configFile) {
    22. ?? config = new Configuration().configure(configFile);
    23. ?? buildSession();
    24. }
    25. public Session getSession() {
    26. ??return session;
    27. }
    28. public void save(Object obj) {
    29. ?? Transaction tx = session.beginTransaction();
    30. ?? session.save(obj);
    31. ?? tx.commit();
    32. }
    33. public Object load(Class clas, Integer priId) {
    34. ??return session.get(clas, priId);
    35. }
    36. public Query findbyhql(String hql) {
    37. ??return session.createQuery(hql);
    38. }
    39. public List pageSizeByhql(String hql) {
    40. ??return findbyhql(hql).list();
    41. }
    42. public SQLQuery findbysql(String sql) {
    43. ??return session.createSQLQuery(sql);
    44. }
    45. public void update(Object obj) {
    46. ?? Transaction tx = session.beginTransaction();
    47. ?? session.saveOrUpdate(obj);
    48. ?? tx.commit();
    49. }
    50. public void delete(Class clas, Integer inte) {
    51. ?? session.delete(load(clas, inte));
    52. }
    53. public void delete(Object obj) {
    54. ?? session.delete(obj);
    55. }
    56. public void deletebyhql(String hql) {
    57. ?? Query query = session.createQuery(hql);
    58. ?? query.executeUpdate();
    59. }
    60. public Query createQuery(String hql) {
    61. ??return session.createQuery(hql);
    62. }
    63. }

    Hibernate訪問多個數據庫步驟三:測試類

    1. package org.jskyme.data.test;
    2. import junit.framework.TestCase;
    3. import org.hibernate.Query;
    4. import org.jskyme.hibernate.util.DataBaseManager;
    5. import org.jskyme.hibernate.util.SessionManager;
    6. public class DataBaseManagerTest extends TestCase {
    7. DataBaseManager dbm = DataBaseManager.getInst();
    8. public void testDatabase() {
    9. ?? setDatabase();
    10. ?? SessionManager tempSess = dbm.get("dataLocal");
    11. ?? Query query = tempSess.createQuery("from?? Shop");
    12. ?? query.list();
    13. ??
    14. ?? SessionManager tempSess27 = dbm.get("dateManage");
    15. ?? Query query27 = tempSess27.createQuery("from Shop");
    16. ?? query27.list();
    17. }
    18. private void setDatabase() {
    19. ?? SessionManager dateManageLocal = new SessionManager("localhost.cfg.xml");
    20. ?? SessionManager dateManage27 = new SessionManager("data_server.cfg.xml");
    21. ?? dbm.put("dateManage", dateManage27);
    22. ?? dbm.put("dataLocal", dateManageLocal);
    23. }
    24. }
    posted on 2009-07-03 13:51 jadmin 閱讀(71) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 最近中文字幕无免费| 国产在线a不卡免费视频| 亚洲午夜AV无码专区在线播放| 亚洲欧洲无卡二区视頻| 免费无码A片一区二三区| 亚洲精品无码99在线观看 | 91精品国产免费入口| 亚洲国产成人一区二区精品区| 亚洲综合欧美色五月俺也去| 毛片基地免费视频a| 亚洲一区二区三区成人网站| 在线A级毛片无码免费真人| 午夜亚洲www湿好大| 日本视频免费观看| 大学生一级毛片免费看| 亚洲色无码专区一区| 免费观看国产小粉嫩喷水| 亚洲免费日韩无码系列| 日本不卡免费新一二三区| 国产区图片区小说区亚洲区| 亚洲一区二区三区自拍公司| 国产精品亚洲综合一区在线观看| 国产一区在线观看免费| 精精国产www视频在线观看免费| 免费观看日本污污ww网站一区| 九九久久国产精品免费热6 | 在线日韩日本国产亚洲| 国产成人不卡亚洲精品91| 亚洲免费视频一区二区三区| 久久国产乱子伦精品免费一 | 91短视频在线免费观看| 亚洲AV无码AV男人的天堂不卡| 青草草色A免费观看在线| 亚洲一区二区三区夜色| 岛国大片免费在线观看| 国产高清对白在线观看免费91| 老司机亚洲精品影院| 免费一看一级毛片| 99re6热视频精品免费观看 | 日韩内射激情视频在线播放免费 | 国产免费人视频在线观看免费|