90---Hibernate使用方法-----------使用註解完成Hibernate對映
實體和資料庫之間存在某種對映關係,hibernate根據這種對映關係完成資料的存取。在程式中這種對映關係由對映檔案(*.hbm.xml)或者java註解(@)定義。
本文以java註解的形式總結對映關係配置。
實體類元件以及註解標籤對映關係
實體類[email protected]/@Table----------資料表
普通屬性[email protected]普通鍵
集合屬性[email protected]/@ManyToOne/@ManyToMany/@OneToOne/@OneToMany----------外來鍵
將對映檔案配置到hibernate配置檔案
Hibernate將通過配置檔案(cfg.xml)定義實體和資料庫關係對映
<mapping class="com.test.Cat"/>
主鍵對映
.Hibernate推薦實體類有主鍵列並且有setter 和 getter,且主鍵資料型別使用引用型別。因為,基礎資料型別不能為null值,hibernate中主鍵的null表明實體類是處在瞬時(Transient)狀態,非null表示處持久化()狀態。
.用@Id宣告為主鍵列,用@Column宣告列名。
.列名屬性名相同時候@Column可以省略。
[email protected]指定主鍵的生成策略
Example:
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
主鍵生成規則
目前@註解支援4種生成策略:
GenerationType.AUTO:根據資料庫自己決定
GenerationType.TABLE:使用指定表決定主鍵的取值
GenerationType.SEQUENCE:使用sequence決定主鍵取值,適合支援sequence的資料庫。
GenerationType.IDENTITY:identity型別的主鍵
普通屬性配置
[email protected]註解使用@Column和@Basic配置普通屬性。兩者都可以省略
[email protected]屬性(宣告欄位約束)
Nullable非空約束
Unique 唯一約束
Insertable 插入約束(是否允許插入)
Updateable 更新約束(是否允許更新)
Length 列長度
ColumnDefinition 列型別
Scale 整數長度
Precision 小數點精度
@Basic屬性(宣告載入方式)
Fetch 是否延遲載入
Optional 該列是否可以為null
Example:
@Column(name = "salary", scale = 8, precision = 2)
@Basic(fetch = FetchType.LAZY, optional=true)
private double salary;
日期屬性配置
日期屬性也是普通屬性
除了@column和@Basic之外還可得使用@Temporal配置日期型別
java.sql.Date/java.sql.Time/java.sql.Timestamp都是java.util.Date的子類。實體類中宣告成java.util.Date就行了。Hibernate根據日期配置的具體型別操作資料庫。
Example:
@Temporal(TemporalType.TIMESTAMP)
// 日期型別(DATE, TIME還是TIMESTEMP)
@Column(name = "createDate")
private Date createDate;
臨時屬性對映
臨時屬性是實體類中方便運算的成員,不參與資料庫的對映。防止hibernate把它和資料庫進行對映導致產生異常,使用@Transient標記。
可以配置在屬性上也可以配置在對應的getter/setter方法上。
Example:
@Transient
Public setterTemp (String temp){
this.temp = temp;
}
版本屬性對映
為了保證資料的準確性,程式必須保證只用一個執行緒同時訪問資料。樂觀鎖和悲觀鎖是兩種實現的方式。@Version是樂觀鎖的實現。版本列一般為數字列。
Example:
@Version
Private int id;
實體關係對映配置
見《Hibernate實體對映配置2([email protected]註解方式)》
==================================================
1.使用註解完成對映使用Hibernate註解的步驟如下:
新增jar包 使用註解配置持久化類以及物件關聯關係使用AnnotationConfiguration建立SessionFactory
在Hibernate配置檔案(hibernate.cfg.xml)中宣告持久化類
2.相關的註解
@Entity將一個類宣告為一個持久化類
@Id聲明瞭持久化類的標識屬性
@GeneratedValue定義標識屬性值的生成策略
@Table(name = "EMP")<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">為持久化類對映指定表</span>
@Column將屬性對映到列(欄位)@Transient將忽略這些屬性
@OneToOne建立持久化類之間的一對一關聯關係
@OneToMany建立持久化類之間的一對多關聯關係
@ManyToOne建立持久化類之間的多對一關聯關係
@ManyToMany建立持久化類之間的多對多關聯關係
3.使用註解可以配置命名查詢。配置命名查詢的註解為@NamedQuery
@Entity
@Table(name = "EMP")
@NamedQuery(name = "selectEmp", query = "from Emp where empName like :ename")
public class Emp implements java.io.Serializable {
//預設其他程式碼
}
============================================================
關係由對映檔案(*.hbm.xml)或者java註解(@)定義。
本文以java註解的形式總結對映關係配置。 一、匯入依賴包。 二、新建實體類 ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
相關推薦90---Hibernate使用方法-----------使用註解完成Hibernate對映實體和資料庫之間存在某種對映關係,hibernate根據這種對映關係完成資料的存取。在程式中這種對映關係由對映檔案(*.hbm.xml)或者java註解(@)定義。 本文以java註解的形式總結對映關係配置。 實體類元件以及註解標籤對映關係 Intellij IDEA使用註解建立Hibernate專案中的OR對映類分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!   Hibernate使用註解對映取代對映檔案在編寫hibernate的時候,需要將實體類對映到資料庫中的表。通常需要一個配置檔案(hibernate.cfg.xml),一個實體類(XX.Java),還有一個對映檔案(XX.hbm.xml)。從JAVA5.0之後,可以利用註解來簡化配置。簡單來說就是不再需要對映檔案了,hibernate需要的元資料( hibernate註解版關聯對映Many-to-One/Many-to-Many等&異常處理應用例項: 一對多和多對一: warning.class 控制 @JsonIgnore@ManyToOne(cascade={CascadeType.MERGE})@JoinColumn(name = "from_id")private User sende 同一個資料庫例項,不同使用者下多表建立檢視,Hibernate完成ORM對映,Spring整合,後臺實現1、同一個資料庫例項,同用戶,多表建立檢視 2、同一個資料庫例項,不同使用者下,多表建立檢視 3、同一個資料庫,不同資料庫例項,多表建立檢視 4、不同型別資料庫,多表建立檢視 1、同一個資料庫例項,同用戶,多表建立檢視 暫缺!! 2、同一個資料庫例項,不同使 Hibernate基於註解方式的各種對映全面總結1. 使用HibernateAnnotation來做物件關係對映 1) 新增必須包: hibernate-jpa-2.0-api-1.0.0.Final.jar 2)在實體類中新增JPA的標準註解來進行物件關係對映.註解可以新增在屬性上,也可以新增在getXxx hibernate使用註解無法進行更新操作的解決方法1.一般來說,在多對多的雙向關聯中,往往是修改頻繁的一方放棄外來鍵維護。但在實際運用時要靈活選擇,如學生選課中,按照前邊那個約定,應該是課程一方維護外來鍵,但若程式中是按照學號查詢一個學生選了哪些課,而不是查詢一門課由哪些學生選擇,則應該由學生端維護外來鍵。否則會出現無法更 hibernate註解版關聯對映 詳解@ManyToOne表示一個多對一的對映,該註解標註的屬性通常是資料庫表的外來鍵 optional:是否允許該欄位為null,該屬性應該根據資料庫表的外來鍵約束來確定,預設為true fetch:表示抓取策略,預設為FetchType.EAGER cascade:表示預設的級聯操作策略,可以指定為AL 使用註解的Hibernate one-to-many映射java temp odi href mes pub ring pack gin One to many映射關系指的是兩個實體間一個實體可以和多個實體有關聯關系,但是多的這一端只能和一的這一端的一個實例有關系。它是一個1 到 n的關系。例如在任何的公司員工可以註冊多個銀行賬 Hibernate的註解和檢索ror finall gets restrict ner 映射關系 generate pojo line Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的orm框架,hibern 懶加載的解決方法(全)org.hibernate.LazyInitializationException: could not initialize proxy - no Sessionclose 修改 logs part 部門 pan 問題 org gin 如下錯誤:org.hibernate.LazyInitializationException: could not initialize proxy - no Session 原因是懶加載的問題,因為 2.2、Hibernate用註解方式實現一對多、多對多關系tab 技術部 employee join incr 無法運行 hset strategy urn 一、一對多關系 1、在上一篇日誌中用.xml配置文件項目基礎上,再往lib目錄先添加一個包-hibernate-jpa-2.0-api-1.0.0.Final.jar Hibernate的註解似開發lib import 註意 這一 員工 orm框架 join ons 屬性 掛有@的接口和一些描述元註解 本次開發使用的註解 @Id: 必須,定義了映射到數據庫表的主鍵的屬性,一個實體只能有一個屬性被映射為主鍵 @Table 可選,通常和@E 自動建立hibernate。配置檔案,對映,實體自動生成,日誌的配置建立db 空白處ne 搭建簡單的hibernate框架,完成對mysql的增刪改查搭建hibernate的步驟: 1.首先下載hibernate原始碼https://nchc.dl.sourceforge.net/project/hibernate/hibernate4/4.3.11.Final/hibernate-release-4.3.11.Final.zip 2 SpringBoot | Hibernate @Transient 註解在預設情況下,持久化類的所有屬性會自動對映到資料表的資料列。如果在實際應用中,不想持久儲存某些屬性,則可以考慮使用 @Transient來修飾它們。 如果一個屬性並非資料庫表的欄位對映,就務必將其標示為 @Transient,否則,ORM框架預設其註解為@Basic 被註解成 @Tra Hibernate使用註解實現1VN的關係?示例:國家、省份、城市的三級連動。 一、資料庫要求: 1、國家表nation:nid國家編號、nname國家名稱 2、省份表province:pid省份編號、pname省份名稱、nid國家的編號 3、城市表city:cid城市編號、cname城市名稱、pid省份編號 二、實體類: hibernate中多對多對映配置詳細解析1.hibernate.cfg.xml檔案 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd Hibernate JPA註解 @Temporal(TemporalType.DATE) 日期註解@Temporal標籤的作用: 1、如果在某類中有Date型別的屬性,資料庫中儲存可能是’yyyy-MM-dd hh:MM:ss’要在查詢時獲得年月日,在該屬性上標註@Temporal(TemporalType.DATE) 會得到形如’yyyy-MM-dd’ 格式的日期。 DAT hibernate基於註解的維護權反轉:@OneToMany(mappedBy=)背景說明:首先是SSH環境下,物件基於註解的方式對映到資料庫; 昨天遇到一個比較糾結的問題,@OneToMany(mappedBy="xxx"), mappedBy屬性有什麼用,然後是寫在哪一邊? 還有一個問題是:@JoinColumn(name="xxxxx"),J |