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](name = "users") //指定表名為users
03.public class Users implements Serializable {
04.}
3.設定主鍵
01.public class Users implements Serializable {
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]
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](strategy=GenerationType.IDENTITY)//主鍵自增,注意,這種方式依賴於具體的資料庫,如果資料庫不支援自增主鍵,那麼這個型別是沒法用的
[email protected](name = "user_id", nullable = false)
05.private int userId;
06.
07.
08.public class Users implements Serializable {
[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](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](name = "T_ONE")
03.public class One implements Serializable {
04.private static final long serialVersionUID = 1L;
[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](name = "T_MANY")
03.public class Many implements Serializable {
04.private static final long serialVersionUID = 1L;
[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](name = "T_MANYA")
03.public class ManyA implements Serializable {
04.private static final long serialVersionUID = 1L;
[email protected](name = "MANYA_ID", nullable = false)
07.private String manyaId;
[email protected](name = "DESCRIPTION")
09.private String description;
[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](name = "T_MANYB")
03.public class ManyB implements Serializable {
04.private static final long serialVersionUID = 1L;
[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](name = "T_ONEA")
03.public class OneA implements Serializable {
04.private static final long serialVersionUID = 1L;
[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](name = "T_ONEB")
03.public class OneB implements Serializable {
04.private static final long serialVersionUID = 1L;
[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的主鍵
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.瞬時欄位
不需要與資料庫對映的欄位,在儲存的時候不需要儲存倒資料庫
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.}
相關推薦
Hibernate中pojo註解介紹
原文地址: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
Hibernate中fetch和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
註解解決Hibernate中should be mapped with insert="false" updatable=false
參考:http://blog.sina.com.cn/s/blog_6829be5c01016pjj.html 在使用註解時,會遇到雙向一對多和多對一問題: 例如order與orderitem: 在order中: /* * @OneToMany: 指明Or