1. 程式人生 > >hibernate和jpa註解關聯總結

hibernate和jpa註解關聯總結

用hibernate和jpa annotation 大概一年多了,今天閒來無事,對他們關聯關係元資料寫法做一個總結。  
1.一對一主鍵關聯  
這個在實際專案中用的比較少,大部分是通過用外來鍵做關聯的,這裡用使用者和手機號舉個例子,使用者和手機號是一對一的關係,程式碼如下:  
User實體 
Java程式碼   收藏程式碼
  1.   package com.own.model;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. public class Users implements Serializable{  
  6.   
  7.       private static final long serialVersionUID = 1381652232198529039L;  
  8.     private int id;  
  9.     private String username;  
  10.     private String password;  
  11.     private CellphoneNumber phoneNumber;  
  12.     public
     CellphoneNumber getPhoneNumber() {  
  13.         return phoneNumber;  
  14.     }  
  15.     public void setPhoneNumber(CellphoneNumber phoneNumber) {  
  16.         this.phoneNumber = phoneNumber;  
  17.     }  
  18.     public int getId() {  
  19.         return id;  
  20.     }  
  21.     public void setId(int id) {  
  22.         this.id = id;  
  23.     }  
  24.     public String getUsername() {  
  25.         return username;  
  26.     }  
  27.     public void setUsername(String username) {  
  28.         this.username = username;  
  29.     }  
  30.     public String getPassword() {  
  31.         return password;  
  32.     }  
  33.     public void setPassword(String password) {  
  34.         this.password = password;  
  35.     }  
  36.   
  37.       
  38. }  


手機號實體 
Java程式碼   收藏程式碼
  1.   package com.own.model;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. public class CellphoneNumber implements Serializable {  
  6.       
  7.     private static final long serialVersionUID = -1029364968566042141L;  
  8.       
  9.     private Integer cellPhoneId;  
  10.     private String number;  
  11.     private String attribution;//手機歸屬地  
  12.     private String cellphonoeType;//移動或者聯通  
  13.     private Users user ;  
  14.     public Users getUser() {  
  15.         return user;  
  16.     }  
  17.     public void setUser(Users user) {  
  18.         this.user = user;  
  19.     }  
  20.     public Integer getCellPhoneId() {  
  21.         return cellPhoneId;  
  22.     }  
  23.     public void setCellPhoneId(Integer cellPhoneId) {  
  24.         this.cellPhoneId = cellPhoneId;  
  25.     }  
  26.     public String getNumber() {  
  27.         return number;  
  28.     }  
  29.     public void setNumber(String number) {  
  30.         this.number = number;  
  31.     }  
  32.     public String getAttribution() {  
  33.         return attribution;  
  34.     }  
  35.     public void setAttribution(String attribution) {  
  36.         this.attribution = attribution;  
  37.     }  
  38.     public String getCellphonoeType() {  
  39.         return cellphonoeType;  
  40.     }  
  41.     public void setCellphonoeType(String cellphonoeType) {  
  42.         this.cellphonoeType = cellphonoeType;  
  43.     }  
  44.       
  45.     @Override  
  46.     public boolean equals(Object anotherObject){  
  47.         if(anotherObject == null || anotherObject.getClass() != this.getClass()){  
  48.             return false;  
  49.         }  
  50.         if(this == anotherObject){  
  51.             return true;  
  52.         }  
  53.           
  54.         CellphoneNumber another = (CellphoneNumber) anotherObject;  
  55.         if(another.cellPhoneId.equals(this.cellPhoneId)){  
  56.             return true  ;  
  57.         }  
  58.           
  59.         return false;  
  60.     }  
  61.       
  62.     public int hashCode(){  
  63.           
  64.         return cellPhoneId.hashCode();  
  65.     }  
  66.       
  67.       
  68. }  

users對映檔案 Xml程式碼   收藏程式碼
  1.    <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC  
  3.       "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.           "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  
  5.   
  6. <hibernate-mapping >  
  7.   
  8.         <class name="com.own.model.Users"  table="users"  dynamic-update="true"  dynamic-insert="true"     >  
  9.             
  10.            <id name="id"  column="id" >  
  11.               <generator class="native"></generator>  
  12.            </id>  
  13.              
  14.             <property name="username"  column="username"   ></property>    
  15.             <property name="password"  column="password" type="string"  ></property>    
  16.               
  17.             <!-- 這裡是一對一對映 級聯為所有 -->  
  18.             <one-to-one name="phoneNumber" class="com.own.model.CellphoneNumber" cascade="all"  >  
  19.               
  20.             </one-to-one>      
  21.               
  22.         </class>  
  23. </hibernate-mapping>  

cellPhone對映檔案 Xml程式碼   收藏程式碼
  1.    <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC  
  3.       "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.           "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  
  5.   
  6. <hibernate-mapping >  
  7.   
  8.         <class name="com.own.model.CellphoneNumber"  table="cellphone"  dynamic-update="true"  dynamic-insert="true"   >  
  9.            <!-- 這裡設定外來鍵關聯 -->  
  10.            <id name="cellPhoneId"  column="id" >  
  11.               <generator class="foreign">  
  12.                   <!-- 這裡設定用引用user實體的主鍵  -->  
  13.                 <param name="property">user</param>  
  14.               </generator>  
  15.            </id>  
  16.             <property name="number"  column="cellphoneNumber" ></property>    
  17.             <property name="attribution"  column="attribution"   ></property>    
  18.             <property name="cellphonoeType"  column="numberType"   ></property>    
  19.             <!-- 加上外來鍵約束  ,使Cellphone的主鍵引用user錶行的主鍵 -->  
  20.             <one-to-one name="user" constrained="true"  class="com.own.model.Users"  ></one-to-one>  
  21.         </class>  
  22. </hibernate-mapping>  

在呼叫時,要設定關聯關係

相關推薦

hibernatejpa註解關聯總結

用hibernate和jpa annotation 大概一年多了,今天閒來無事,對他們關聯關係元資料寫法做一個總結。   1.一對一主鍵關聯   這個在實際專案中用的比較少,大部分是通過用外來鍵做關聯的,這裡用使用者和手機號舉個例子,使用者和手機號是一對一的關係,

Hibernate JPA 註解方式自定義ID生成器

/** * Test.java * 實體類定義和配置 */ package com.saving.ecm.resource.entity; import javax.persistence.Column; import javax.persistence.Enti

使用註解風格學習HibernateJPA的主鍵生成策略

                      主鍵是關係資料庫中的一個基本概念,它用來保證記錄的唯一性。簡單來說,就是同一張資料庫表中,不允許存在多條相同主鍵的記錄。主鍵生成策略,就是當向資料庫表中插入記錄的時候,這個記錄的主鍵該如何生成。絕大部分情況下,主鍵都是沒有業務含義的,所以開發者不會、也不需要,顯示地

HibernateJPA

Mybatis(ibatis)半自動化orm框架,需要手寫sql語句 Hibernate  全自動化orm框架,不需要寫sql語句 Hibernate底層也是jdbc sun公司制定JPA規範(Java Persistence API)  java持久化規範   內部是介面和抽象類組成   Hibe

對於HibernateJPA的理解

前言 在學習EJB的過程中,碰到了持久化這一概念,前面我一直沒弄清楚JPA和Hibernate的關係,隨著查閱的資料越多,我逐漸弄清了這三者的關係。 概念 持久化:將內容中的物件儲存到磁碟這類永久儲存器中,在需要的時候可以將其調回記憶體還原為物件。 ORM:是一種程式

Hibernate使用JPA註解宣告一個PO類

第一步:在hibernate.cfg.xml配置資料庫連線和連線池 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hiberna

Spring整合HibernateStruts2註解配置檔案

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3

JPA註解學習總結

目錄 結合網上的一些知識,與實際應用情況,對JPA註解做了一些總結: 1.設定Pojo為實體 @Entity //標識這個pojo是一個jpa實體 public class Use

JPAHibernateMybatis區別總結

一、應用場合: 傳統公司、部分個人開發者喜歡用jpa;而網際網路公司更青睞於mybatis 原因: 1、mybatis更加靈活,開發迭代模式決定了他是網際網路公司的首先;每一次的修改不會帶來效能上的下降。 2、傳統公司需求迭代速度慢、專案改動小,hibernate可以

ssh2項目整合 struts2.1+hibernate3.3+spring3 基於hibernate註解struts2註解

模塊 port aware -- ids tle des 項目 @service 項目文件夾結構例如以下: 核心配置文件: web.xml <?xml version="1.0" encoding="UTF-8"

springboot-application.xml可配置屬性總結 (datasource JPA)

isolation equal catalog 清除 proc ack app gin idl ########################################## ###datasource ###############################

Hibernate JPA註解 @Temporal(TemporalType.DATE) 日期註解

@Temporal標籤的作用: 1、如果在某類中有Date型別的屬性,資料庫中儲存可能是’yyyy-MM-dd hh:MM:ss’要在查詢時獲得年月日,在該屬性上標註@Temporal(TemporalType.DATE) 會得到形如’yyyy-MM-dd’ 格式的日期。 DAT

hibernate關聯總結

 在一對多與多對一的關聯關係中,儲存資料最好的通過多的一方來維護關係,這樣可以減少update語句的生成,從而提高hibernate的執行效率! 配置一對多與多對一,這種叫“雙向關聯” 只配置一對多,       &nbs

SpringBoot中如何使用jpajpa的相關知識總結

1.介紹jpa的簡單概念: JPA顧名思義就是Java Persistence API的意思,是JDK 5.0註解或XML描述物件-關係表的對映關係,並將執行期的實體物件持久化到資料庫中。 2.jpa的優勢: 2.1標準化 JPA 是 JCP 組織釋出的 Java EE

springboot jpahibernatemysql對應欄位如何處理

    背景:程式中的entity物件中欄位expression為json字串欄位,每次前端傳過來的json物件進行轉換會時出現錯誤,由於expression被轉換為了JsonObject型別導致。

JPA Hibernate 資料庫 的 鎖機制

本文總結Java中有關資料庫儲存持久資料的鎖機制,不只是純粹資料庫自身的鎖,本文主要就Java持久層三個技術資料庫、JPA和Hibernate的鎖應用進行了總結。   在併發理論中,鎖是用於保護可變的共享資料,以保證資料的完整性,大多數應用程式都是依賴於資料庫本身提供的

Java反射註解一些總結

Java 反射和註解的一些總結 反射 // There are five kinds of classes (or interfaces): // a) Top level classes // b) Nested classes (static m

Hibernate SessionJpa EntityManager

本文主要比較一下二者操作實體類的方法的關係和區別。 本文適用 Hibernate:4.3.11.Final 和 spring-data-jpa:1.10.4.RELEASE 。 建立方式 Session: Configuration config

Hibernate的一對多關聯關係(單向雙向)

雙向關聯:主表中有從表的屬性,從表中有主表的屬性。 單向關聯:主表中只有從表的屬性。            建立兩個類檔案:Person,card package c

Spring Data JPA註解@DynamicInsert@DynamicUpdate

Hibernate,JPA註解@DynamicInsert和@DynamicUpdate @DynamicInsert屬性:設定為true,設定為true,表示insert物件的時候,生成動態的insert語句,如果這個欄位的值是null就不會加入到inse