<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 閱讀(70) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 日韩精品无码免费专区午夜| 国产免费伦精品一区二区三区| 日本免费一区二区三区| 怡红院亚洲怡红院首页| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 麻豆成人精品国产免费| 亚洲免费一级视频| 动漫黄网站免费永久在线观看| 亚洲中文无码av永久| 国产精品久久久久免费a∨| 亚洲国产乱码最新视频| 成人免费午间影院在线观看| 亚洲日韩精品无码专区加勒比☆| 成人午夜视频免费| 国产亚洲综合精品一区二区三区| 又黄又爽的视频免费看| a级毛片免费网站| 亚洲高清专区日韩精品| 1000部拍拍拍18勿入免费视频软件 | 女性自慰aⅴ片高清免费| 亚洲色偷偷色噜噜狠狠99| 国产美女无遮挡免费视频| 日本一区二区三区在线视频观看免费 | 国产a级特黄的片子视频免费| 深夜a级毛片免费无码| 奇米影视亚洲春色| 1000部免费啪啪十八未年禁止观看 | a在线视频免费观看在线视频三区| 亚洲产国偷V产偷V自拍色戒| 中文字幕免费视频一| 亚洲免费网站观看视频| 久久精品国产亚洲Aⅴ香蕉| 毛片在线全部免费观看| 亚洲AV无码专区在线亚| 全亚洲最新黄色特级网站| 你好老叔电影观看免费| 亚洲国产精品yw在线观看| 日本免费人成黄页网观看视频| 国产成人无码精品久久久免费| 911精品国产亚洲日本美国韩国| 四虎影视免费在线|