⑴ hibernate支持sqlite嗎
Hibernate是ORM框架。ORM(Object Relational Mapping)是對象關系模型,當然是只支持關系型資料庫!你去看hibernate核心jar下的org.hibernate.dialect 包裡面有哪些方言,都是關系資料庫的方言。
⑵ 達夢資料庫可以用hibernate嗎
JAVA的一般項目都可以使用的——如果是現成的,只是看改動的代價如何。
⑶ hibernate是什麼
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
Hibernate的核心類和介面一共有6個,分別為:Session、SessionFactory、
Transaction、Query、Criteria和Configuration。這6個核心類和介面在任何開發中都會用到。通過這些介面,不僅可以對持久化對象進行存取,還能夠進行事務控制。
Session:
Session介面負責執行被持久化對象的CRUD操作(CRUD的任務是完成與資料庫的交流,包含了很多常見的SQL語句)。但需要注意的是Session對象是非線程安全的。同時,Hibernate的session不同於JSP應用中的HttpSession。這里當使用session這個術語時,其實指的是Hibernate中的session,而以後會將HttpSession對象稱為用戶session。
SessionFactory:
SessionFactory介面負責初始化Hibernate。它充當數據存儲源的代理,並負責創建Session對象。這里用到了工廠模式。需要注意的是SessionFactory並不是輕量級的,因為一般情況下,一個項目通常只需要一個SessionFactory就夠,當需要操作多個資料庫時,可以為每個資料庫指定一個SessionFactory。
Transaction:
Transaction 介面是一個可選的API,可以選擇不使用這個介面,取而代之的是Hibernate 的設計者自己寫的底層事務處理代碼。 Transaction 介面是對實際事務實現的一個抽象,這些實現包括JDBC的事務、JTA 中的UserTransaction、甚至可以是CORBA 事務。之所以這樣設計是能讓開發者能夠使用一個統一事務的操作界面,使得自己的項目可以在不同的環境和容器之間方便地移植。
Query:
Query介面讓使用者方便地對資料庫及持久對象進行查詢,它可以有兩種表達方式:HQL語言或本地資料庫的SQL語句。Query經常被用來綁定查詢參數、限制查詢記錄數量,並最終執行查詢操作。
Criteria:
Criteria介面與Query介面非常類似,允許創建並執行面向對象的標准化查詢。值得注意的是Criteria介面也是輕量級的,它不能在Session之外使用。
Configuration:
Configuration 類的作用是對Hibernate 進行配置,以及對它進行啟動。在Hibernate 的啟動過程中,Configuration 類的實例首先定位映射文檔的位置,讀取這些配置,然後創建一個SessionFactory對象。雖然Configuration 類在整個Hibernate 項目中只扮演著一個很小的角色,但它是啟動hibernate 時所遇到的第一個對象。
⑷ hibernate可以跨資料庫嗎
首先來說,跨資料庫肯定是可以的!
通常有兩個方法,第一個是笨辦法,就是在配置項里定義兩個數據源,並且這兩個數據源分屬於兩個SessionFaction對象。並且在代碼中也有創建兩個對象分別對應兩個資料庫,這樣做比較麻煩,代碼會很繁瑣,並且執行效率不一定高。
第二個辦法是使用spring開源框架里提供的動態數據源,通過動態的載入,將兩個數據源信息載入到一個SessionnFacgtion對象中。方法一裡面提到的缺點在這里都能夠很好的解決。
大概步驟如下:
1.org.springframework.beans.factory.support.DefaultListableBeanF
actory獲得bean工廠,可以添加銷毀數據源;
2.org.springframework.beans.factory.support.BeanDefinitionBuilder動態創建bean,然後通過
DefaultListableBeanFactory.registerBeanDefinition(dsInfo.getId(), beanDefinitionBuilder.getBeanDefinition()); 注冊數據源事務
3.銷毀數據源
beanFactory.destroySingleton(tsId);
beanFactory.removeBeanDefinition(tsId);
⑸ hibernate 默認使用什麼資料庫
(1)在資料庫中定義你的屬性默認值;
(2)將<class name="User">改為
<class name="User"
dynamic-update="true"
dynamic-insert="true"
>
注釋:加上dynamic-insert="true" 即可,說明是動態插入你在資料庫中定義好的默認值。dynamic-update="true"相對於更新而言的。
⑹ hibernate可以創建資料庫嗎
可以,寫個MAIN類,有個方法,參數是兩個TRUE
⑺ hibernate與資料庫連接的幾種方式
三種連接都是以連接MySQl為例。
<!-- JDBC驅動程序 -->
<property name="connection.driver_class">org.gjt.mm.mysql.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</property> <!-- 資料庫用戶名 -->
<property name="connection.username">root</property> <!-- 資料庫密碼 -->
<property name="connection.password">8888</property>
上面的一段配置,在c3p0和dbcp中,都是必需的,因為hibernate會根據上述的配置來生成connections,再交給c3p0或dbcp管理.但是,proxool則不能,雖然說服文檔上說proxool也可以和hibernate結合,但我按照官方文檔上的說明怎麼配也出錯,而且,到了sun和hibernat有的官方網站上問了幾天,都沒有一個人回復。後來我只能讓proxool自身來生成連接,這在下面再講。
1 C3P0
只需在hibernate.cfg.xml中加入
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">30</property>
<property name="c3p0.time_out">1800</property>
<property name="c3p0.max_statement">50</property>
還有在classespath中加入c3p0-0.8.4.5.jar
2 dbcp
在hibernate.cfg.xml中加入
<property name="dbcp.maxActive">100</property>
<property name="dbcp.whenExhaustedAction">1</property>
<property name="dbcp.maxWait">60000</property>
<property name="dbcp.maxIdle">10</property>
<property name="dbcp.ps.maxActive">100</property>
<property name="dbcp.ps.whenExhaustedAction">1</property>
<property name="dbcp.ps.maxWait">60000</property>
<property name="dbcp.ps.maxIdle">10</property>
還有在classespath中加入commons-pool-1.2.jar 和commons-dbcp-1.2.1.jar.
3 proxool
在hibernate.cfg.xml中加入
<property name="proxool.pool_alias">pool1</property>
<property name="proxool.xml">ProxoolConf.xml</property>
<property name="connection.provider_class">net.sf.hibernate.connection.ProxoolConnectionProvider</property>
然後,在和hibernate.cfg.xml同一個目錄下,加一個ProxoolConf.xml文件,內容為
<?xml version="1.0" encoding="utf-8"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
<proxool>
<alias>pool1</alias>
<!--proxool只能管理由自己產生的連接-->
<driver-url>jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</driver-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<driver-properties>
<property name="user" value="root"/>
<property name="password" value="8888"/>
</driver-properties>
<!-- proxool自動偵察各個連接狀態的時間間隔(毫秒),偵察到空閑的連接就馬上回收,超時的銷毀-->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!-- 指因未有空閑連接可以分配而在隊列中等候的最大請求數,超過這個請求數的用戶連接就不會被接受-->
<maximum-new-connections>20</maximum-new-connections>
<!-- 最少保持的空閑連接數-->
<prototype-count>5</prototype-count>
<!-- 允許最大連接數,超過了這個連接,再有請求時,就排在隊列中等候,最大的等待請求數由maximum-new-connections決定-->
<maximum-connection-count>100</maximum-connection-count>
<!-- 最小連接數-->
<minimum-connection-count>10</minimum-connection-count>
</proxool>
</something-else-entirely>
並在classespath中加入proxool-0.8.3.jar
⑻ hibernate 怎樣知道連接哪個資料庫
String url = "jdbc:mysql://localhost/資料庫名; 這個url會在hibernate中的配置文件有寫,如果引進properties的話那麼就在 .properties文件中。
⑼ hibernate用的什麼資料庫
先了解一下概念吧
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與資料庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
⑽ hibernate如何支持多資料庫
一個sessionFactory對應一個資料庫 配置多個不同名的sf 寫一個容器管理他們