1. 程式人生 > >Hibernate中pojo註解介紹

Hibernate中pojo註解介紹

原文地址:http://blog.sina.com.cn/s/blog_8d8425f301014dls.html

1.設定Pojo為實體

[email protected] //標識這個pojo是一個jpa實體    

02.public class Users implements Serializable {    

03.} 

2.設定表名

[email protected]    

[email protected](name = "users") //指定表名為users    

03.public class Users implements Serializable {    

04.} 

3.設定主鍵

01.public class Users implements Serializable {    

[email protected]    

03.private String userCode; 

4. 設定欄位型別

通過@Column註解設定,包含的設定如下

.name:欄位名

.unique:是否唯一

.nullable:是否可以為空

.inserttable:是否可以插入

.updateable:是否可以更新

.columnDefinition: 定義建表時建立此列的DDL

.secondaryTable: 從表名。如果此列不建在主表上(預設建在主表),該屬性定義該列所在從表的名字。

[email protected](name = "user_code", nullable = false, length=32)//設定屬性userCode對應的欄位為user_code,長度為32,非空   

02.private String userCode;    

[email protected](name = "user_wages", nullable = true, precision=12, scale=2)//設定屬性wages對應的欄位為user_wages,12位數字可保留兩位小數,可以為空   

04.private double wages;    

[email protected]

(TemporalType.DATE)//設定為時間型別    

06.private Date joinDate; 

5.欄位排序

在載入資料的時候可以為其指定順序,使用@OrderBy註解實現

[email protected](name = "USERS")    

02.public class User {    

[email protected](name = "group_name ASC, name DESC")    

04.private List books = new ArrayList();    

05.} 

6.主鍵生成策略

01.public class Users implements Serializable {    

[email protected]    

[email protected](strategy=GenerationType.IDENTITY)//主鍵自增,注意,這種方式依賴於具體的資料庫,如果資料庫不支援自增主鍵,那麼這個型別是沒法用的   

[email protected](name = "user_id", nullable = false)    

05.private int userId;    

06. 

07. 

08.public class Users implements Serializable {    

[email protected]    

[email protected](strategy=GenerationType.TABLE)//通過一個表來實現主鍵id的自增,這種方式不依賴於具體的資料庫,可以解決資料遷移的問題   

[email protected](name = "user_code", nullable = false)    

12.private String userCode;    

13. 

14. 

15.public class Users implements Serializable {    

[email protected]    

[email protected](strategy=GenerationType.SEQUENCE)//通過Sequence來實現表主鍵自增,這種方式依賴於資料庫是否有SEQUENCE,如果沒有就不能用   

[email protected](name="seq_user")    

[email protected](name = "user_id", nullable = false)    

20.private int userId; 

7.一對多對映關係

有T_One和T_Many兩個表,他們是一對多的關係,註解範例如下

主Pojo

[email protected]    

[email protected](name = "T_ONE")    

03.public class One implements Serializable {    

04.private static final long serialVersionUID = 1L;    

[email protected]    

[email protected](name = "ONE_ID", nullable = false)    

07.private String oneId;    

[email protected](name = "DESCRIPTION")    

09.private String description;    

[email protected](cascade = CascadeType.ALL, mappedBy = "oneId")//指向多的那方的pojo的關聯外來鍵欄位   

11.private Collection manyCollection;  

子Pojo

[email protected]    

[email protected](name = "T_MANY")    

03.public class Many implements Serializable {    

04.private static final long serialVersionUID = 1L;    

[email protected]    

[email protected](name = "MANY_ID", nullable = false)    

07.private String manyId;    

[email protected](name = "DESCRIPTION")    

09.private String description;    

10. 

[email protected](name = "ONE_ID", referencedColumnName = "ONE_ID")//設定對應資料表的列名和引用的資料表的列名   

[email protected]//設定在“一方”pojo的外來鍵欄位上    

13.private One oneId;  

8.多對多對映關係

貌似多對多關係不需要設定級聯,以前用hibernate的時候著實為多對多的級聯頭疼了一陣子,JPA的多對多還需要實際的嘗試一下才能有所體會。

估計JPA的多對多也是可以轉換成兩個一對多的。

第一個Pojo

[email protected]    

[email protected](name = "T_MANYA")    

03.public class ManyA implements Serializable {    

04.private static final long serialVersionUID = 1L;    

[email protected]    

[email protected](name = "MANYA_ID", nullable = false)    

07.private String manyaId;    

[email protected](name = "DESCRIPTION")    

09.private String description;    

[email protected]    

[email protected](name = "TMANY1_TMANY2", joinColumns = {@JoinColumn(name = "MANYA_ID", referencedColumnName = "MANYA_ID")}, inverseJoinColumns = {@JoinColumn(name = "MANYB_ID", referencedColumnName = "MANYB_ID")})   

12.private Collection manybIdCollection;  

第二個Pojo

[email protected]    

[email protected](name = "T_MANYB")    

03.public class ManyB implements Serializable {    

04.private static final long serialVersionUID = 1L;    

[email protected]    

[email protected](name = "MANYB_ID", nullable = false)    

07.private String manybId;    

[email protected](name = "DESCRIPTION")    

09.private String description;    

[email protected](mappedBy = "manybIdCollection")    

11.private Collection manyaIdCollection;  

9.一對一對映關係

主Pojo

[email protected]    

[email protected](name = "T_ONEA")    

03.public class OneA implements Serializable {    

04.private static final long serialVersionUID = 1L;    

[email protected]    

[email protected](name = "ONEA_ID", nullable = false)    

07.private String oneaId;    

[email protected](name = "DESCRIPTION")    

09.private String description;    

[email protected](cascade = CascadeType.ALL, mappedBy = "oneA")//主Pojo這方的設定比較簡單,只要設定好級聯和對映到從Pojo的外來鍵就可以了。   

11.private OneB oneB;   

從Pojo

[email protected]    

[email protected](name = "T_ONEB")    

03.public class OneB implements Serializable {    

04.private static final long serialVersionUID = 1L;    

[email protected]    

[email protected](name = "ONEA_ID", nullable = false)    

07.private String oneaId;    

[email protected](name = "DESCRIPTION")    

09.private String description;    

[email protected](name = "ONEA_ID", referencedColumnName = "ONEA_ID", insertable = false, updatable = false)//設定從方指向主方的關聯外來鍵,這個ONEA_ID其實是表T_ONEA的主鍵   

[email protected]    

12.private OneA oneA;  

10 大欄位

[email protected] //對應Blob欄位型別    

[email protected](name = "PHOTO")    

03.private Serializable photo;    

[email protected] //對應Clob欄位型別    

[email protected](name = "DESCRIPTION")    

06.private String description; 

11.瞬時欄位

不需要與資料庫對映的欄位,在儲存的時候不需要儲存倒資料庫

[email protected]    

02.private int tempValue;    

03. 

04.public int getTempValue(){    

05.get tempValue;    

06.}    

07. 

08.public void setTempValue(int value){    

09.this.tempValue = value;    

10.}

相關推薦

Hibernatepojo註解介紹

原文地址:http://blog.sina.com.cn/s/blog_8d8425f301014dls.html 1.設定Pojo為實體 [email protected] //標識這個pojo是一個jpa實體     02.public class Use

關於hibernate@Transient註解使用的一點心得

   (例): @Transient表示該屬性並非一個到資料庫表的欄位的對映,ORM框架將忽略該屬性. 如果一個屬性並非資料庫表的欄位對映,就務必將其標示為@Transient,否則,ORM框架預設其

Hibernate使用註解

Annotation在專案中的使用越來越多,同樣hibernate中支援Annotation,如果在hibernate中使用註解,從而輕XML配置,從下面簡單的小例子加以說明。 1、實體類Emp.java package com.yy.hibernate.model;

Hibernate的一對一註解配置

before code uil ransac ges package open cnblogs 一對一 Card類 package cn.OneToOne2017109.entity; import javax.persistence.*; /** * Creat

SpringBoot,Spring 常用註解@RequestMapping/@GetMapping/@PostMapping /@PutMapping/@DeleteMapping介紹

1、@Controller @Controller 用來響應頁面,表示當前的類為控制器。 2、@RestController @RestController 是@ResponseBody和@Controller的結合 表明當前類是控制器且返回的是一

SpringBoot 常用註解@PathVaribale/@RequestParam/@GetMapping介紹

stp fault 多個參數 ria 小結 組合 ram ger 數值 本篇博文將介紹幾種如何處理url中的參數的註解@PathVaribale/@RequestParam/@GetMapping。 其中,各註解的作用為: @PathVaribale 獲取url中的數據

Hibernate,mappedBy和註解@JoinColumn的對比

mappedBy 我們知道,mappedBy用於指定具有雙向關係的兩個實體中。哪個實體是被關聯處理的。它有如下四個特點: 1.只有OneToOne,OneToMany,ManyToMany上才有mappedBy屬性,ManyToOne不存在該屬性; [email&#

Hibernatefetch和lazy介紹

fetch ,指定關聯物件抓取的方式,可以設定fetch = "select" 和 fetch = "join"。select方式時先查詢返回要查詢的主體物件(列表),再根據關聯外來鍵id,每一個物件發一個select查詢,獲取關聯的物件,形成n+1次查詢;而join方式,主

SpringBoot 常用註解@Controller/@RestController/@RequestMapping介紹

@Controller //@ResponseBody public class HelloController {     @RequestMapping(value="/hello",method= RequestMethod.GET)     public Strin

spring註解@component使用介紹

@Component("userManager") public class UserManagerImpl implements UserManager { private UserDao userDao; public UserDao getUserDao() {

Hibernate、SpringJDBC註解模式下獲取資料庫連線

<!--用apache的dbcp建立資料庫連線池-->     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">    <!-- 使用者名稱-->             <

hibernate實體類註解

一、JPA通用策略生成器 通過annotation來對映hibernate實體的,基於annotation的hibernate主鍵標識為@Id, 其生成規則由@GeneratedValue設定的.這裡的@id和@GeneratedValue都是JPA的標準用法, JPA提供四種標準用法,由

hibernate如何用Annotion註解設定model的欄位不持久化

public final static int DELETESTATUS_YES=1; public final static int DELETESTATUS_NO=0; @Id @GeneratedValue(

Hibernate使用@Lob 註解儲存String[] 問題

Hibernate中使用@Lob 註解儲存String[] 問題在Hibernate註解中如何你想儲存一個欄位為String陣列型別,如果你想嘗試儲存為clob型別的話,一般情況下為定義為:@Entit

Hibernate 3.6@OneToMany註解部署到WebSphere7上報錯的解決辦法

專案中使用到了Hibernate 3.6,在PO類中使用了@OneToMany註解 在Tomcat上部署執行正常,但是部署到webSphere7上出現問題,報錯如下: Caused by: java.lang.NoSuchMethodError: javax/persis

spring hibernate實體類註解

@Autowired宣告在屬性上,表示這個屬性需要注入 然後在你的applicationContext.xml中加入以下配製 <context:component-scan base-pack

Hibernate使用JPA註解@OneToMany的cascade級聯標籤

Parent-Child關係 在介紹級聯標籤之前要說一下@OneToOne、@OneToMany、@ManyToOne、@ManyToMany的父子關係(或者母子關係T.T)。 @OneToOne和@ManyToMany中:可自行選擇 @OneToMany

hibernate cascade取值介紹

當關聯雙方存在父子關係,就可以在 set 處設定 cascade 為 all-delete-orphan 所謂父子關係,即指由父方控制子方的持久化聖明週期,子方物件必須和一個父方物件關聯。如果刪除父方物件,應該級聯刪除所有關聯的子方物件;如果一個子方物件不再和一個父方物件

java hibernate 對映和註解oracle含有blob欄位的資料表的pojo原始碼

     將oracle資料表blob欄位對映到hibernate pojo的byte[]屬性,構造pojo時,直接傳入byte陣列即可,如果需要傳入一個File物件,只需使用FileUtils.readFileToByteArray(file)將File轉換為byte

註解解決Hibernateshould be mapped with insert="false" updatable=false

參考:http://blog.sina.com.cn/s/blog_6829be5c01016pjj.html 在使用註解時,會遇到雙向一對多和多對一問題: 例如order與orderitem: 在order中: /*        * @OneToMany: 指明Or