hibernate和jpa註解關聯總結
1.一對一主鍵關聯
這個在實際專案中用的比較少,大部分是通過用外來鍵做關聯的,這裡用使用者和手機號舉個例子,使用者和手機號是一對一的關係,程式碼如下:
User實體
Java程式碼
- package com.own.model;
-
- import java.io.Serializable;
- public class Users implements Serializable{
- private static final long serialVersionUID = 1381652232198529039L;
- private int id;
- private String username;
- private String password;
- private CellphoneNumber phoneNumber;
- public
- return phoneNumber;
- }
- public void setPhoneNumber(CellphoneNumber phoneNumber) {
- this.phoneNumber = phoneNumber;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
手機號實體
Java程式碼
- package com.own.model;
- import java.io.Serializable;
- public class CellphoneNumber implements Serializable {
- private static final long serialVersionUID = -1029364968566042141L;
- private Integer cellPhoneId;
- private String number;
- private String attribution;//手機歸屬地
- private String cellphonoeType;//移動或者聯通
- private Users user ;
- public Users getUser() {
- return user;
- }
- public void setUser(Users user) {
- this.user = user;
- }
- public Integer getCellPhoneId() {
- return cellPhoneId;
- }
- public void setCellPhoneId(Integer cellPhoneId) {
- this.cellPhoneId = cellPhoneId;
- }
- public String getNumber() {
- return number;
- }
- public void setNumber(String number) {
- this.number = number;
- }
- public String getAttribution() {
- return attribution;
- }
- public void setAttribution(String attribution) {
- this.attribution = attribution;
- }
- public String getCellphonoeType() {
- return cellphonoeType;
- }
- public void setCellphonoeType(String cellphonoeType) {
- this.cellphonoeType = cellphonoeType;
- }
- @Override
- public boolean equals(Object anotherObject){
- if(anotherObject == null || anotherObject.getClass() != this.getClass()){
- return false;
- }
- if(this == anotherObject){
- return true;
- }
- CellphoneNumber another = (CellphoneNumber) anotherObject;
- if(another.cellPhoneId.equals(this.cellPhoneId)){
- return true ;
- }
- return false;
- }
- public int hashCode(){
- return cellPhoneId.hashCode();
- }
- }
users對映檔案 Xml程式碼
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <hibernate-mapping >
- <class name="com.own.model.Users" table="users" dynamic-update="true" dynamic-insert="true" >
- <id name="id" column="id" >
- <generator class="native"></generator>
- </id>
- <property name="username" column="username" ></property>
- <property name="password" column="password" type="string" ></property>
- <!-- 這裡是一對一對映 級聯為所有 -->
- <one-to-one name="phoneNumber" class="com.own.model.CellphoneNumber" cascade="all" >
- </one-to-one>
- </class>
- </hibernate-mapping>
cellPhone對映檔案 Xml程式碼
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <hibernate-mapping >
- <class name="com.own.model.CellphoneNumber" table="cellphone" dynamic-update="true" dynamic-insert="true" >
- <!-- 這裡設定外來鍵關聯 -->
- <id name="cellPhoneId" column="id" >
- <generator class="foreign">
- <!-- 這裡設定用引用user實體的主鍵 -->
- <param name="property">user</param>
- </generator>
- </id>
- <property name="number" column="cellphoneNumber" ></property>
- <property name="attribution" column="attribution" ></property>
- <property name="cellphonoeType" column="numberType" ></property>
- <!-- 加上外來鍵約束 ,使Cellphone的主鍵引用user錶行的主鍵 -->
- <one-to-one name="user" constrained="true" class="com.own.model.Users" ></one-to-one>
- </class>
- </hibernate-mapping>
在呼叫時,要設定關聯關係
相關推薦
hibernate和jpa註解關聯總結
用hibernate和jpa annotation 大概一年多了,今天閒來無事,對他們關聯關係元資料寫法做一個總結。 1.一對一主鍵關聯 這個在實際專案中用的比較少,大部分是通過用外來鍵做關聯的,這裡用使用者和手機號舉個例子,使用者和手機號是一對一的關係,
Hibernate 和 JPA 註解方式自定義ID生成器
/** * Test.java * 實體類定義和配置 */ package com.saving.ecm.resource.entity; import javax.persistence.Column; import javax.persistence.Enti
使用註解風格學習Hibernate和JPA的主鍵生成策略
主鍵是關係資料庫中的一個基本概念,它用來保證記錄的唯一性。簡單來說,就是同一張資料庫表中,不允許存在多條相同主鍵的記錄。主鍵生成策略,就是當向資料庫表中插入記錄的時候,這個記錄的主鍵該如何生成。絕大部分情況下,主鍵都是沒有業務含義的,所以開發者不會、也不需要,顯示地
Hibernate和JPA
Mybatis(ibatis)半自動化orm框架,需要手寫sql語句 Hibernate 全自動化orm框架,不需要寫sql語句 Hibernate底層也是jdbc sun公司制定JPA規範(Java Persistence API) java持久化規範 內部是介面和抽象類組成 Hibe
對於Hibernate和JPA的理解
前言 在學習EJB的過程中,碰到了持久化這一概念,前面我一直沒弄清楚JPA和Hibernate的關係,隨著查閱的資料越多,我逐漸弄清了這三者的關係。 概念 持久化:將內容中的物件儲存到磁碟這類永久儲存器中,在需要的時候可以將其調回記憶體還原為物件。 ORM:是一種程式
Hibernate使用JPA註解宣告一個PO類
第一步:在hibernate.cfg.xml配置資料庫連線和連線池 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hiberna
Spring整合Hibernate和Struts2註解配置檔案
<?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
JPA、Hibernate和Mybatis區別和總結
一、應用場合: 傳統公司、部分個人開發者喜歡用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中如何使用jpa和jpa的相關知識總結
1.介紹jpa的簡單概念: JPA顧名思義就是Java Persistence API的意思,是JDK 5.0註解或XML描述物件-關係表的對映關係,並將執行期的實體物件持久化到資料庫中。 2.jpa的優勢: 2.1標準化 JPA 是 JCP 組織釋出的 Java EE
springboot jpa 非hibernate和mysql對應欄位如何處理
背景:程式中的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 Session和Jpa 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