成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hibernate訪問多個數據庫

開發 后端
本文描述Hibernate訪問多個數據庫的操作步驟。思路就是,利用Hibernate可以加載不同數據庫配置信息的原理,編寫一個數據庫操作類,再編寫一個數據庫管理程序[map],將加載的數據庫連接實例put早數據庫管理程序中。

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.  
  6. < hibernate-configuration> 
  7.     < session-factory > 
  8.  
  9.   < !-- local connection properties --> 
  10.   < property name="hibernate.connection.url">jdbc:mysql://localhost:3306/bookshop?zeroDateTimeBehavior=convertToNull< /property> 
  11.   < property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver< /property> 
  12.   < property name="hibernate.connection.username">root< /property> 
  13.   < property name="hibernate.connection.password">12345678< /property> 
  14.   < !-- property name="hibernate.connection.pool_size">< /property --> 
  15.  
  16.   < !-- dialect for MySQL --> 
  17.         < property name="dialect">org.hibernate.dialect.MySQLDialect< /property> 
  18.  
  19.         < property name="hibernate.show_sql">true< /property> 
  20.         < property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory< /property>          
  21.         < property name="hbm2ddl.auto">update< /property> 
  22.  
  23.      < mapping resource="org/jskyme/data/local/po/Shop.hbm.xml"/> 
  24.     < /session-factory> 
  25. < /hibernate-configuration> 

data_server.cfg.xml

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

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

數據庫管理類:DataBaseManager

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

Hibernate連接數據庫操作類:

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

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

  1. package org.jskyme.data.test;  
  2.  
  3. import junit.framework.TestCase;  
  4.  
  5. import org.hibernate.Query;  
  6. import org.jskyme.hibernate.util.DataBaseManager;  
  7. import org.jskyme.hibernate.util.SessionManager;  
  8.  
  9. public class DataBaseManagerTest extends TestCase {  
  10.  DataBaseManager dbm = DataBaseManager.getInst();  
  11.  
  12.  public void testDatabase() {  
  13.   setDatabase();  
  14.   SessionManager tempSess = dbm.get("dataLocal");  
  15.   Query query = tempSess.createQuery("from  Shop");  
  16.   query.list();  
  17.     
  18.   SessionManager tempSess27 = dbm.get("dateManage");  
  19.   Query query27 = tempSess27.createQuery("from Shop");  
  20.   query27.list();  
  21.  }  
  22.  
  23.  private void setDatabase() {  
  24.   SessionManager dateManageLocal = new SessionManager("localhost.cfg.xml");  
  25.   SessionManager dateManage27 = new SessionManager("data_server.cfg.xml");  
  26.   dbm.put("dateManage", dateManage27);  
  27.   dbm.put("dataLocal", dateManageLocal);  
  28.  
  29.  }  
  30. }  

【編輯推薦】

  1. Hibernate的lazy屬性總結
  2. Hibernate中hbm的generator子元素
  3. 簡單理解Hibernate三種狀態的概念及互相轉化
  4. 操作Hibernate類:增加,刪除,修改及查詢
  5. 對于選擇Hibernate還是iBatis的看法
責任編輯:book05 來源: 百度博客
相關推薦

2009-09-28 13:33:48

Hibernate訪問

2010-04-19 10:00:02

Oracle SQL

2009-09-28 13:29:41

加載過程Hibernate訪問

2019-08-14 07:59:15

SQLite數據庫SQL

2011-03-24 16:01:30

數據庫管理

2023-10-29 17:15:57

2009-09-24 14:12:22

Hibernate數據

2009-09-25 13:18:15

Hibernate數據

2009-07-10 16:54:50

Jython安裝連接多個數據庫jython

2009-06-24 07:53:47

Hibernate數據

2023-12-29 22:39:25

Golang應用程序數據庫

2009-06-24 07:58:52

Hibernate多數

2024-01-30 15:29:20

Django數據庫Python

2009-06-02 14:36:28

HibernateMySQLEclipse

2011-03-16 17:26:22

動態數據庫

2013-11-26 09:47:47

ORM

2009-09-15 10:02:44

Linq to SQL

2010-05-20 14:52:42

MySQL數據庫

2011-03-03 11:07:57

Spring數據庫訪問ORM

2018-07-13 09:20:30

SQLite數據庫存儲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜在线 | 永久免费视频 | h视频免费在线观看 | 欧美99久久精品乱码影视 | 999久久久久久久久6666 | 精品粉嫩aⅴ一区二区三区四区 | 一本一道久久a久久精品蜜桃 | 亚洲成人一区二区 | 亚洲一区二区 | 91麻豆精品国产91久久久资源速度 | 国产日韩一区二区三区 | 欧美日韩国产三级 | 欧美日韩一区二区视频在线观看 | 免费国产一区二区 | 久草在线青青草 | 亚洲成人在线免费 | www.国产视频 | 香蕉视频91| 一级黄色片在线免费观看 | 国产亚洲欧美日韩精品一区二区三区 | 在线色网址 | 综合网在线 | 久久久久国产 | 人人看人人干 | 91精品久久久久久久 | 国产成人精品999在线观看 | 日韩在线国产 | 国产精品国产精品 | 久久国产一区二区 | 国产伦精品一区二区三区四区视频 | 亚洲国产精品久久人人爱 | 日本在线一区二区三区 | 国户精品久久久久久久久久久不卡 | 天堂中文字幕av | 亚洲一区欧美 | 精品一区二区三区在线观看 | 精品美女视频在线观看免费软件 | 7777在线 | 精品久久久久久久人人人人传媒 | 免费在线观看黄网站 | 91亚洲精选 |