當前位置:首頁 » 操作系統 » hibernate資料庫類型

hibernate資料庫類型

發布時間: 2022-06-29 11:58:11

『壹』 hibernate bean 的數據類型必須與資料庫的類型匹配嗎

有些數據類型匹配的時候,不是太強烈,適合就行。當然如果程序中的數據類型和資料庫類型不搭界,那麼會有問題

『貳』 Hibernate的類型怎樣映射資料庫中欄位的自定義類型

在hibernate的xml映射文件中可以配置實體屬性與資料庫欄位間的對應關系。如下:
<property name="salary" precision="2" scale="10" length="255"
column="salary" type="string" update="true" insert="true"
lazy="false" unique="false" not-null="false">
</property>

『叄』 hibernate用的什麼資料庫

先了解一下概念吧
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與資料庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成sql語句,自動執行,使得java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。

『肆』 我在hibernate里配置的數據類型為java。util.Date,資料庫連接的是oracle,創建表時老生成的是datetime

oracle時間類型應該是date,對應java裡面的Date 應該是java.sql.Date;所有你配置的時候配置這個就不會出錯了。如果你要傳入時間類型到資料庫,就new java.sql.Date(new java.Util.Date().getTime);

『伍』 hibernate 的兩種類型

Hibernate的映射類型:一對一,一對多,多對多,並生成相應的.hbm.xml。hibernate主鍵類型
1.Assigned 主鍵由資料庫內部生成,無需Hibernate干預。

2.hilo 需要額外資料庫表保存主鍵生成歷史狀態。

3.increment 在實例中維持一個變數,以保存當前最大值。多實例訪問時可能會出錯。

4.identity 採用資料庫提供的生成機制,如SQL Server、MySQL中自增主鍵生成機制。

5.sequence 採用資料庫提供的sequence生成機制,如果Oracle。

6.uuid.hex 由hibernate基於128位唯一值演算法生成,最大的保證唯一性,可能數萬年才出現一次重復。
7.native 由hibernate自動判斷資料庫類型而採用不同的生成機制,常用。

『陸』 關於Hibernate數據類型

底層數據類型還沒有用過,在實際的開發過程中Java數據類型是使用的最多的,如果按照我自己的想法,Java數據類型效率應該是高於hibernate的,因為hibernate數據類型畢竟也是在Java數據類型上進行的重寫和封裝,hibernate的底層還是使用的JDBC來存貯數據的,所以hibernate數據類型最後還是的轉換成Java數據類型進行存貯,如果使用Java數據類型就可以直接存貯,不需要在底層對數數據類型進行轉換(自己理解的)

『柒』 Hibernate中數據類型,數組怎麼用

1.char 和nchar 當填入數據為空時,資料庫自動使用全空格來代替,從而使not null形同虛設。所以如果欄位不能為空,一定要在程序中提前判斷。
2.char 和nchar因為長度固定,據說讀寫的速度要比 varchar和nvarchar快 .
大概有25 種數據類型:
Binary [(n)],Varbinary [(n)],Char[(n)],Varchar[(n)],Nchar[(n)],Nvarchar[(n)],Datetime,Smalldatetime,Decimal[(p[,s])],Numeric[(p[,s])],Float[(n)],Real,Int,Smallint,Tinyint,Money,Smallmoney,Bit,CursorSysname,Timestamp,Uniqueidentifier,Text,Image,Ntext。

『捌』 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中關於boolean數據類型

Hibernate的映射類型為java.lang.Boolean,在mysql中為tinint(1)類型。在資料庫中數據可以為空。在java.lang.*中有以下類型 long :Laong int :Integer decimal:java.math.BigDecimal 而,long,int,不為空,不賦值的話,為Random()值。

『拾』 如何理解Hibernate中的HibernateSessionFactory類

package com.zz.util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

/**
* Configures and provides access to Hibernate sessions, tied to the
* current thread of execution. Follows the Thread Local Session
* pattern, see {@link http://hibernate.org/42.html }.
*/
public class HibernateSessionFactory {

/**
* Location of hibernate.cfg.xml file.
* Location should be on the classpath as Hibernate uses
* #resourceAsStream style lookup for its configuration file.
* The default classpath location of the hibernate config file is
* in the default package. Use #setConfigFile() to update
* the location of the configuration file for the current session.
*/
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static org.hibernate.SessionFactory sessionFactory;

private static Configuration configuration = new Configuration();
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static String configFile = CONFIG_FILE_LOCATION;

static {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}

/**
* Returns the ThreadLocal Session instance. Lazy initialize
* the <code>SessionFactory</code> if needed.
*
* @return Session
* @throws HibernateException
*/
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();

if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}

return session;
}

/**
* Rebuild hibernate session factory
*
*/
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}

/**
* Close the single hibernate session instance.
*
* @throws HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);

if (session != null) {
session.close();
}
}

/**
* return session factory
*
*/
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}

/**
* return session factory
*
* session factory will be rebuilded in the next call
*/
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
/**
* return hibernate configuration
*
*/
public static Configuration getConfiguration() {
return configuration;
}

}

HibernateSessionFactory類是自定義的SessionFactory,名字可以根據自己的喜好來決定。這里用的是HibernateSessionFactory,其內容及解釋。上述代碼是由myeclipse 自動生成的;也可以根據自己的情況寫出:

package com.zz.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

//在使用hibernate開發項目,請一定保證只有一個SessionFactory
//一個資料庫對應一個SessionFactory 對象.
final public class MySessionFactory {

private static SessionFactory sessionFactory=null;

private MySessionFactory(){

}

static{

sessionFactory =new Configuration().configure("com/zz/config/hsp.cfg.xml").buildSessionFactory();
System.out.println("sessionFactory 類型"+sessionFactory);
}

public static SessionFactory getSessionFactory(){
return sessionFactory;
}

}

在Hibernate中,Session負責完成對象持久化操作。該文件負責創建Session對象,以及關閉Session對象。從該文件可以看出,Session對象的創建大致需要以下3個步驟:

① 初始化Hibernate配置管理類Configuration。

② 通過Configuration類實例創建Session的工廠類SessionFactory。

③ 通過SessionFactory得到Session實例。
?1. Configuration介面

Configuration負責管理Hibernate的配置信息。Hibernate運行時需要一些底層實現的基本信息。這些信息包括:資料庫URL、資料庫用戶名、資料庫用戶密碼、資料庫JDBC驅動類、資料庫dialect。用於對特定資料庫提供支持,其中包含了針對特定資料庫特性的實現,如Hibernate資料庫類型到特定資料庫數據類型的映射等。

使用Hibernate必須首先提供這些基礎信息以完成初始化工作,為後續操作做好准備。這些屬性在Hibernate配置文件hibernate.cfg.xml中加以設定,當調用:

Configuration config=new Configuration().configure();

時,Hibernate會自動在目錄下搜索hibernate.cfg.xml文件,並將其讀取到內存中作為後續操作的基礎配置。
? 2. SessionFactory介面

SessionFactory負責創建Session實例,可以通過Configuration實例構建SessionFactory。

Configuration config=new Configuration().configure();

SessionFactorysessionFactory=config.buildSessionFactory();

Configuration實例config會根據當前的資料庫配置信息,構造SessionFacory實例並返回。SessionFactory一旦構造完畢,即被賦予特定的配置信息。也就是說,之後config的任何變更將不會影響到已經創建的SessionFactory實例sessionFactory。如果需要使用基於變更後的config實例的SessionFactory,需要從config重新構建一個SessionFactory實例。

SessionFactory保存了對應當前資料庫配置的所有映射關系,同時也負責維護當前的二級數據緩存和Statement Pool。由此可見,SessionFactory的創建過程非常復雜、代價高昂。這也意味著,在系統設計中充分考慮到SessionFactory的重用策略。由於SessionFactory採用了線程安全的設計,可由多個線程並發調用。
?3. Session介面

Session是Hibernate持久化操作的基礎,提供了眾多持久化方法,如save、update、delete等。通過這些方法,透明地完成對象的增加、刪除、修改、查找等操作。

同時,值得注意的是,HibernateSession的設計是非線程安全的,即一個Session實例同時只可由一個線程使用。同一個Session實例的多線程並發調用將導致難以預知的錯誤。

Session實例由SessionFactory構建:

Configuration config=new Configuration().configure();

SessionFactorysessionFactory=config.buldSessionFactory();

Session session=sessionFactory.openSession();
?4. Transaction介面

Transaction是Hibernate中進行事務操作的介面,Transaction介面是對實際事務實現的一個抽象,這些實現包括JDBC的事務、JTA中的UserTransaction,甚至可以是CORBA事務。之所以這樣設計是可以讓開發者能夠使用一個統一的操作界面,使得自己的項目可以在不同的環境和容器之間方便地移值。事務對象通過Session創建。例如以下語句:

Transaction ts=session.beginTransaction();
?5. Query介面

在Hibernate 2.x中,find()方法用於執行HQL語句。Hibernate 3.x廢除了find()方法,取而代之的是Query介面,它們都用於執行HQL語句。Query和HQL是分不開的。

Query query=session.createQuery(「fromtable where id=1」);

例如以下語句:

Query query=session.createQuery("fromtable whereid=?");

就要在後面設置其值:

Query.setString(0,"要設置的值");

上面的方法是通過「?」來設置參數,還可以用「:」後跟變數的方法來設置參數,如上例可以改為:

Query query=session.createQuery("fromtable whereid=:1");

Query.setString("kchValue","要設置的課程號值");

其使用方法是相同的,例如:

Query.setParameter(0,"要設置的值");

Query還有一個list()方法,用於取得一個List集合的示例,此示例中包括可能是一個Object集合,也可能是Object數組集合。例如:

Query query=session.createQueryhttp://www.315nk.com/xtkf/?fromtable whereid=1");

List list=query.list();

熱點內容
忘記密碼如何登錄國家反詐中心 發布:2024-11-16 07:51:55 瀏覽:95
編程圖片平移 發布:2024-11-16 07:41:06 瀏覽:652
黃金數演算法 發布:2024-11-16 07:40:15 瀏覽:65
門鎖動態密碼是什麼樣的 發布:2024-11-16 07:39:33 瀏覽:912
namespacelinux 發布:2024-11-16 07:28:13 瀏覽:352
html去緩存 發布:2024-11-16 07:05:22 瀏覽:723
如何限制蘋果ip段訪問伺服器 發布:2024-11-16 07:02:57 瀏覽:661
knn演算法原理 發布:2024-11-16 06:56:18 瀏覽:854
c語言第一章 發布:2024-11-16 06:49:07 瀏覽:51
伺服器ip黑名單和網站ip黑名單區別 發布:2024-11-16 06:45:56 瀏覽:888