1. 程式人生 > >90---Hibernate使用方法-----------使用註解完成Hibernate對映

90---Hibernate使用方法-----------使用註解完成Hibernate對映

實體和資料庫之間存在某種對映關係,hibernate根據這種對映關係完成資料的存取。在程式中這種對映關係由對映檔案(*.hbm.xml)或者java註解(@)定義。

本文以java註解的形式總結對映關係配置。

實體類元件以及註解標籤對映關係

實體類[email protected]/@Table----------資料表

[email protected]主鍵

普通屬性[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 Session

close 修改 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