當前位置:首頁 » 數據倉庫 » hibernate資料庫設計
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

hibernate資料庫設計

發布時間: 2022-07-01 10:00:49

A. hibernate採用什麼設計模式切換數據源

Hibernate可以用在任何JDBC可以使用的場合,例如Java應用程序的資料庫訪問代碼,DAO介面 的實現類,甚至可以是BMP裡面的訪問資料庫的代碼。從這個意義上來說,Hibernate和EB不是一個范疇的東西,也不存在非此即彼的關系。 二、Hibernate是一個和...

B. 高分求 hibernate 資料庫設計 方面的讀書筆記

hibernate的API不是就很好用么?

就是對象映射關系的問題。維護權你是用hibernate管理還是用數據子自己管理呢?

C. 請簡述Hibernate工作原理

Hibernate工作原理是Configuration讀取Hibernate的配置文件和映射文件中的信息,即載入配置文件和映射文件,並通過Hibernate配置文件生成一個多線程的SessionFactory對象。

然後,多線程SessionFactory對象生成一個線程Session 對象;Session對象生成Query對象或者Transaction對象;可通過Session對象的get(),load(),save(),update(),delete()和saveOrUpdate( )等方法對PO進行載入、保存、更新、刪除等操作。

在查詢的情況下,可通過Session 對象生成一個Query對象,然後利用Query對象執行查詢操作;如果沒有異常,Transaction對象將提交這些操作結果到資料庫中。

(3)hibernate資料庫設計擴展閱讀:

Hibernate它對JDBC進行了非常輕量級的對象封裝,它將POJO與資料庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成sql語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。

Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的JaveEE架構中取代CMP,完成數據持久化的重任。

D. Hibernate Oracle 資料庫主鍵 如何設計

用Number(38)就可以吧,主鍵用Long會很慢!至於Hibernate可以這些配置實體類

@Entity
@javax.persistence.SequenceGenerator(name = "SEQ_SCHEME", sequenceName = "SEQ_SCHEME", allocationSize = 1)
@Table(name = "USER")
@org.hibernate.annotations.Entity(dynamicInsert = true, dynamicUpdate = true, selectBeforeUpdate = true)
public final class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_SCHEME")
/* * */
@Column(name = "userid")
private Long userid;
}

E. 簡述hibernate數據模型

某個超類或實現Hibernate 的某個介面。因為Hibernate 是面向對象的程序設計語
言和關系資料庫之間的橋梁,所以Hibernate 允許程序開發者採用面向對象的方式
來操作關系資料庫。 補充: Hibernate 概述
Hibernate 是目前最流行的ORM 框架,其採用非常優雅的方式將SQL 操作完全包裝
成對象化的操作。其作者Gavin King 在持久層設計上極富經驗,採用非常少的代碼實現
了整個框架,同時完全開放源代碼,即使偶爾遇到無法理解的情況,也可以參照源代碼
來理解其在持久層上靈巧而智能的設計。
目前Hibernate 在國內的開發人員相當多, Hibernate 的文檔也非常豐富,這些都為
學習Hiberante 鋪平了道路,因而Hibernate 的學習相對簡單一些。下面通過對比來了解
Hibernate 和傳統JDBC 操作資料庫持久層之間的差異。
Hibernate 的起源
當前的軟體開發語言已經全面轉向面向對象,而資料庫系統仍停留在關系資料庫階
段。面對復雜的企業環境,同時使用面向對象語言和關系資料庫是相當麻煩的,不但中
間的過渡難以理解,而且其開發周期也相當長。
Hibernate 是一個面向Java 環境的對象/關系資料庫映射工具。對象/關系資料庫映射194久化E( Object/Relational Mapping) 表示一種技術,用來把對象模型表示的對象映射到基於SQL
的關系模型數據結構中去。
Hibernate 的目標是:釋放開發者通常的數據持久化相關的編程任務的95% 。對於以
數據為中心的程序而言,往往在資料庫中使用存儲過程來實現商業邏輯,Hibernate 可能
不是最好的解決方案。但對於那些基於Java 的中間件應用中,設計採用面向對象的業務
據庫廠商的SQL 代碼,並且把結果集由表格式的形式轉換成值對象的形式。
Hibernate 不僅管理Java 類到資料庫表的映射(包括Java 數據類型到SQL 數據類型
的映射) ,還提供數據查詢和獲取數據的方法,可以大幅度地減少在開發時人工使用SQL

F. Hibernate是不是設計的太重量級了

純OO的ORM組件,第三方插件支持做的不是很好,基本就是黑盒。很難擴展,也很難找問題。

我們早期曾經用這個做過一個票務系統,在並發略高的情況下,經常出現索引溢出異常,還有個人在維護階段發現這個東西對內存的消耗有些嚴重,當然已經排錯是開發人員的代碼問題。

優點:純OO,對資料庫結構的依賴性解除的還不錯,不會出現資料庫的結構一更改,服務端直接crash的情況,所以,可以在運行中去調整資料庫的結構(開發階段)。純面向對象,針對單表操作的一些業務,開發便捷,效率高,但是對復雜點的多表查詢和相關操作,支持非常有限。

缺點:第三方的插件支持有限,更新慢,出現內部問題以後,排查和解決非常困難。

hibernate的重,在於它是一個大而全的ORM,內部依賴了一些其他特定版本的其他組件,導致一些在生產環境下偶然性發生的問題,排查和解決異常困難。

目前我碰到過的是hibernate內f在查詢時填充查詢結果到字典里的時候,有一個線程的並發問題,這個問題直接導致IndexOutOfRange異常,在生產環境下偶然性發生,非常難通個debug的形式進行問題重現。

嘗試解決了很久,都沒能解決,最後,沒有辦法,引入dapper,用dapper重寫了幾個業務壓力較大的業務方法。

G. hibernate能創建資料庫嗎怎麼創建稍微詳細點

hibernate不能創建資料庫,
他只是一個框架。
能方便你程序對資料庫數據的操作。
資料庫都是mysql、oracle、sqlserver創建的

H. 按照Hibernate的設計原則,映射文件和資料庫表,誰導出誰

這其實就是OOD的思想
系統分析完之後就是設計了,
也就是MODEL的設計,一個項目核心還是MODEL,數據的持久化這些都是非常機械的,基本沒有變動的,HIBERNATE就是把這些行為抽取出來自動完成並在效率上做一優化等,也就是說開發的時候我沒根本不用做持久化的模塊,我們只要寫一些DAO介面,再在測試的時候模擬一些數據就行,MODEL設計完畢我們把DAO實現一下,再編寫配置文件,系統就組裝完畢了,可以測試了。
這樣,在開發的時候根本就不用去做資料庫的設計了,使得我們的做法更OO了這就是OOD的思想。再者H框架的高移植性,使得我們可以輕松的把現在系統換別的資料庫實現

I. hibernate投票系統資料庫設計。。

number, --投票內容

J. hibernate怎麼通過實體類創建資料庫表

常規的思路是,設計好資料庫,建好表,藉助MyEclipse(也可以是其他IDE),自動生成映射,或者自己寫映射。早就聽說hibernate中可以自動生成表。但是一直沒有試驗。今天首先介紹其中的一個屬性hbm2ddl.auto,這個就是這個方案的核心屬性,有四個值:create,create-drop,update看看我們從網上查找到得資料:
<!--
啟動時刪資料庫中的表,然後創建,退出時不刪除數據表
<property
name="hbm2ddl.auto">create</property>-->
<!--
啟動時刪資料庫中的表,然後創建,退出時自動刪除所有表
<property
name="hbm2ddl.auto">create-drop</property>-->
<!--
自動修改,如果表結構與實體類不一致,那麼就修改表使它們一致,數據會保留
<property
name="hbm2ddl.auto">update</property>-->
<!--
自動校驗,如果表結構與實體類不一致,那麼不做任何操作,報錯
<property
name="hbm2ddl.auto">validate</property>-->
這樣的話,設計實體類,直接寫POJO,然後寫映射,讓hibernate幫我們生成資料庫表。