日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Hibernate】Hibernate实体关系映射——单边的多对一关系

發布時間:2024/4/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Hibernate】Hibernate实体关系映射——单边的多对一关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單邊的多對一關系


?? 單邊的多對一關系與單邊的一對多關系剛好相反,多方有一方的引用,一方沒有多方的引用,但是他們的數據表間的關系是一樣的。例如:論文與論文類別;


具體實現如下:

?

? Type實體類的java注解配置比較簡單。由于沒有Article引用,Type就是最普通的POJO實體,主鍵為id屬性,只有一個String類型的普通屬性name。注意:name被配置為unique的,利用數據庫提供的unique約束保證數據庫中不會有重復的數據。

?

Type.java

?

package com.lmb.hibernate.bean;import javax.persistence.*;@Entity @Table(name="tb_type") public class Type {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Integer id;@Column(unique = true)private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;} }


?

???? ?Article屬性中有一個Type類型的屬性。該屬性將配置為ManyToOne的。Article中配置了級聯操作PERSIST,如果Type對象沒有被持久化,則持久化Article對象是會一并持久化Type對象。由于content字段內容可能比較長,因此配置content列的數據庫類型為text。如果要存儲更多的內容,可配置為longtext。

?


Article.java

?

package com.lmb.hibernate.bean;import javax.persistence.*;@Entity @Table(name="tb_article") public class Article {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Integer id;private String name;@Column(columnDefinition = "text")private String content;@ManyToOne(cascade = {CascadeType.PERSIST},fetch = FetchType.EAGER)@JoinColumn(name = "type_id")private Type type;//getters and setterspublic Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public Type getType() {return type;}public void setType(Type type) {this.type = type;} }

?

?

?? 將兩個實體配置到hibernate配置文件中。

?


hibernate.cfg.xml

?

<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration><session-factory><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=UTF-8</property><property name="connection.username">lmb</property><property name="connection.password">lmb</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><mapping class="com.lmb.hibernate.bean.Person" /><mapping class="com.lmb.hibernate.bean.Email" /><mapping class="com.lmb.hibernate.bean.Type" /><mapping class="com.lmb.hibernate.bean.Article" /></session-factory></hibernate-configuration>


?

測試方法:

?

?? 先實例化一個Type對象,一個Article對象,并設置批次的依賴關系。然后通過HibernateSessionFactory打開一個session會話,開啟Transaction事務,然后保存Article對象。由于Article中設置了級聯保存,保存Article時hibernate將自動級聯保存Type對象。然后查詢所有的Article并輸出。查看結果。

?

?

?

?

?

總結

以上是生活随笔為你收集整理的【Hibernate】Hibernate实体关系映射——单边的多对一关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。