<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
以下內容科班同學學過UML和資料庫的應該比較熟悉
資料模型:資料模型是對資料庫特徵的抽象,也就是使用者從資料庫中看到的模型,例如一張資料表或者使用者從資料表中所看到的儲存資訊,此模型既要物件導向又要面向系統
領域模型:領域模型是對現實世界中的物件的視覺化表現,又稱為概念模型,領域模型或者分析物件模式,沒有所謂唯一正確的領域模型,所有模型都是對我們試圖要理解的領域的近似,領域模型主要是在特定群體用於理解和溝通的工具
接下來的內容與資料庫中的ER圖對映成關係表十分相似
兩個類對映成表,並且把被關聯表的主鍵作為關聯表的外來鍵
<hibernate-mapping> <class name="com.mr.product.Product" table="tab_product"> <id name="id" column="id" type="int"> <generator class="native"/> </id> <property name="name" type="string" length="45"> <column name="name"/> </property> <property name="price" type="double"> <column name="price"/> </property> <many-to-one name="factory" class="com.mr.factory.Factory"> <column name="factoryid"/> </many-to-one> </class> </hibernate-mapping>
以任一個表的主鍵作另一個表的外來鍵都可以
<hibernate-mapping> <class name="com.mr.product.Product" table="tab_product"> <id name="id" column="id" type="int"> <generator class="native"/> </id> <property name="name" type="string" length="45"> <column name="name"/> </property> <set name="products" inverse="true"> <key column="factoryid"/> </property> <one-to-many class="com.mr.product.Product"> </set> </class> </hibernate-mapping>
指的是兩個表之間通過主鍵形成一對一的對映
<hibernate-mapping> <class name="com.mr.people.People" table="tab_people"> <id name="id" column="id" type="int"> <generator class="native"/> </id> <property name="name" type="string" length="45"> <column name="name"/> </property> <property name="sex" type="string" length="2"> <column name="sex"/> </property> <property name="age" type="int"> <column name="age"/> </property> <ont-to-ont name="com.mr.idcard.IDcard" cascade="all"/> </class> </hibernate-mapping>
這個設定比較簡單 新增一個新欄位即可 此處不再贅述
多對多關聯比較特殊 需要另外的一張表來儲存多對多的對映關係
<hibernate-mapping> <class name="com.mr.user.User" table="tab_user"> <id name="id"> <generator class="native"/> </id> <property name="name" not-null="true"/> <set name="roles" table="tab_mapping"> <key column=""user_id"></key> <many-to-many class="com.mr.role.Role" column="role_id"/> </set> </class> </hibernate-mapping>
級聯操作指的是當主控方執行對資料表的更改時,關聯物件是否進行同步操作,在對映檔案中通過對cascade屬性的設定決定是否對關聯物件採用級聯操作
all 所有情況下均採用級聯操作
none 預設引數 所有情況下均不採用級聯操作
save-update 在執行save-update方法時執行級聯操作
delete 在執行delete方法時執行級聯操作
繼承是物件導向的重要特性 在Hibernate中是以物件導向的思想進行持久化操作的,所以在Hibernate中資料表所對映的實體的物件也是可以存在繼承關係的 主要有以下三種
學生和職員共同繼承了人的實體物件,也將擁有人的實體的物件的全部屬性 可以將這三個類對映到一張表中 新增一個欄位來區分同名屬性
<hibernate-mapping package="com.mr.person"> <class name="Person" table="tab_person"> <id name="id"> <generator class="native"/> </id> <discriminator column="type" type="string"/> <property name="name" not-null="true"/> <property name="age" type="int"/> perperty name="sex" type="string"/> <subclass name="Studeng" discrimination-value="學生"> <property name="school"/> </subclass> <subclass name="Staffer" discrimination-value="職員"> <property name="company"/> </subclass> </class> </hibernate-mapping>
上述的三個類也可以將每個子類對映成一張表 兩個子類對映的表都將通過主鍵關聯到超類對映的表,形成一對一的關係
<hibernate-mapping package="com.mr.person"> <class name="Person" table="tab_person"> <id name="id"> <generator class="native"/> </id> <discriminator column="type" type="string"/> <property name="name" not-null="true"/> <property name="age" type="int"/> perperty name="sex" type="string"/> <joined-subclass name="Student" table="tab_student"> <key column="id"/> <property name="school"/> </joined-subclass> <joined-subclass name="Staffer" discrimination-value="職員"> <key column="id"/> </joined-subclass> </class> </hibernate-mapping>
將 每個具體類對映成一張表 每個子類的對映表中都含有繼承的父類別屬性對映的欄位
<hibernate-mapping package="com.mr.person"> <class name="Person" abstract="true"> <id name="id"> <generator class="assigned"/> </id> <discriminator column="type" type="string"/> <property name="name" not-null="true"/> <property name="age" type="int"/> perperty name="sex" type="string"/> <union-subclass name="Student" table="tab_student"> <key column="id"/> <property name="school"/> </union-subclass> <union-subclass name="Staffer" discrimination-value="職員"> <key column="id"/> </union-subclass> </class> </hibernate-mapping>
HQL(Hibernate Query Language)是完全物件導向的查詢語言,它提供了更加物件導向的封裝,它可以理解如多型, 繼承和關聯的概念 HQL看上去與SQL相似 但它卻提供了更加強大的查詢功能
HQL是物件導向的查詢語言,所以它需要從目標物件中查詢資訊並返回匹配單個實體或多個實體物件的集合,而SQL語句是從資料庫中查詢指定資訊,返回的單條資訊或多條資訊的集合
所以HQL區分大小寫 語法如下
select "物件.屬性名"
from "物件"
where "條件"
group by"物件.屬性名" having "分組條件"
order by "物件.屬性名"
實體物件查詢
from person
最好指定 一個別名 方便其他地方參照
from person per
此時返回的是person物件中的所有資料
查詢指定欄位資料
select Person(id,name) from Person per
引數繫結機制可以使查詢語句和引數具體值相互獨立,不但可以提高程式開發效率,還可以有效的防止SQL的注入攻擊 HQL中有以下兩種方法
1:利用順序預留位置?替代具體引數
session=HibernateUtil.getSession(); String sql="from Employee emp where emp.sex=?"; Query q=session.createQuery(hql); q.setParameter(0,"男"); emplist=q.list();
2:利用預留位置:parameter 替代具體引數
session=HibernateUtil.getSession(); String sql="from Employee emp where emp.sex=:sex"; Query q=session.createQuery(hql); q.setParameter("sex","男"); emplist=q.list();
其餘各種查詢與SQL基本一致 此處不再贅述
到此這篇關於JavaWeb Hibernate使用全面介紹的文章就介紹到這了,更多相關JavaWeb Hibernate內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45