国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 淺談hibernate之映射文件VS映射注解

淺談hibernate之映射文件VS映射注解

2020-12-04 08:57Java教程網 Java教程

下面小編就為大家帶來一篇淺談hibernate之映射文件VS映射注解。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

對于java開發者而言,注解應該不是一個陌生的概念,早在JavaSE階段,例如@Override標記重寫父類方法或實現接口方法,@Test標記單元測試方法,所以我們可以簡單地把它理解為一種有特殊含義的標記...在開發過程中,我們還可以用注解方式替代配置文件實現相關功能,例如Java web開發中,3.0版本后,利用@WebServlet、@WebListener等注解分別可以替代web項目XML配置文件中相關內容。而本文中講述的就是Hibernate的映射配置文件與映射注解的對比,這兩種方式均可以實現映射功能,為了避免先入為主,在此先不闡述孰優孰劣,接下來以實體類基本映射示例,分別用配置文件和注解方式實現。

hibernate.cfg.xml配置文件在使用兩種方式時的變動

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0"?>
<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory>
  <!-- 以下四行分別為:數據庫驅動類、Drivermanager獲取連接的參數URL、用戶名、密碼 -->
  <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="connection.url">jdbc:mysql://127.0.0.1/web?characterEcoding=utf-8</property>
  <property name="connection.username">root</property>
  <property name="connection.password">123456</property>
  <!-- 設置方言,hibernate會根據數據庫的類型相應生成SQL語句 -->
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  <!-- 1.使用映射文件時 -->
  <!-- 映射配置源文件的位置 -->
  <mapping resource="demo/pojo/Person.hbm.xml"/>
  <!-- 2.使用映射注解時 -->
  <!-- 注冊關系映射類 -->
  <mapping class="demo.pojo.Person" />
 </session-factory>
</hibernate-configuration>

實體類映射

背景:數據庫中一個用戶表person,字段四個,包涵自增主鍵id、姓名name、性別sex、年齡age,映射實體類為Person,屬性四個,id、name、gender、age。注意這里實體類屬性名和數據表中字段名如果不一致,例如這里的sex和gender,在映射文件中<property>標簽中name和colum兩個屬性都要寫上,在注解中也不能簡化省略@column,column從譯意上大家應該都能知道它是對應數據庫的字段上,如果不指定字段,默認情況下,系統會把映射文件中的name屬性值作為字段名,注解方式時會把屬性名作為字段名。另外一個要注意的地方就是類屬性是區分大小寫的,而字段是不區分大小寫的。

映射配置文件

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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>
 <!-- name是實體類全名,table為數據表名 -->
 <class name="demo.pojo.Person" table="Person">
  <id name="id" column="id">
   <!-- 主鍵生成方式,native是讓hibernate自動識別 -->
   <generator class="native"></generator>
  </id>
  <!--
  注意點:
  0.name值為實體類中屬性名,column為數據表中字段名;
  1.當實體類中屬性名與對應數據表字段名相同時,后面的column可以省略,hibernate會自動匹配,例如下面age ;
  2.反之當實體類中屬性名與對應數據表字段名不相同時,兩項都要寫上,例如下面gender和sex
  -->
  <property name="name" column="name"></property>
  <property name="gender" column="sex"></property>
  <property name="age"></property>
 </class>
</hibernate-mapping>

映射注解方式

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package demo.pojo;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
//實體類屬性注解,這里統一寫在各屬性的get方法上
@Entity//標記實體類
@Table(name="person",catalog="web")//name對應數據表名,catalog對應數據庫名
public class Person {
 
 private Integer id;
 private String name;
 private String gender;
 private Integer age;
 @Id//標記主鍵
 @Column(name="id")//主鍵字段名,這里與類屬性id是對應相同的,此行可以簡化不寫
 @GeneratedValue(strategy=GenerationType.AUTO)//主鍵生成策略,自動識別
 public Integer getId() {
  return id;
 }
 public void setId(Integer id) {
  this.id = id;
 }
 @Column(name="name")//主鍵字段名,這里與類屬性name是對應相同的,此行可以簡化不寫
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 @Column(name="sex")//主鍵字段名,這里與類屬性gender是對應,但不相同,不可省略
 public String getGender() {
  return gender;
 }
 public void setGender(String gender) {
  this.gender = gender;
 }
 //省略注解
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 @Override
 public String toString() {
  return "Person [id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age + "]";
 }
 
 
}

注意點

0.在hibernate.cfg.xml配置文件中,使用兩種映射方式分別要填映射配置源文件的位置和映射類的全名,一個是<mapping resource="XX/XX/XXX">,一個是<mapping class="XXX.XXX.XXX" />;

1.在使用注解方式時,實體類中導入不要導成Hibernate下的,這里引入都是JPA(Java Persistence API)范疇下的類,不要因為是hibernate框架下,順其自然地以為是那個Hibernate下的類,圖示如下

淺談hibernate之映射文件VS映射注解

小結

相較于冗長的一段段代碼和各個單獨的配置文件,注解無疑會顯得小巧方便一些,特別是還有后面的關聯映射(一對一、一對多、多對一、多對多),映射多了,所需要的配置文件更多,使用注解直接省略了這些文件。深入理解好注解對框架的學習也很有幫助,許多框架中都引入了注解的技術,不論是否認可注解的優勢,個人認為掌握好注解的使用都是很有必要的。

以上這篇淺談hibernate之映射文件VS映射注解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产尤物| 精品婷婷 | 亚洲精品二区 | 一级黄色片aaa | 成人精品视频 | 这里只有精品久久 | 欧美一区二区三区在线观看视频 | 国产日韩精品在线 | eeuss国产一区二区三区四区 | 美女久久 | 青青国产在线 | 黄色一级大片在线免费看产 | 99综合 | 免费黄色在线观看 | 日本一区不卡 | 精品视频在线免费观看 | 一区二区中文 | 男人的天堂在线免费视频 | 久草久| 91精品国产九九九久久久亚洲 | 毛片网站大全 | 成人国产 | 成人av观看 | 日韩精品一区二区三区在线播放 | 日本一区二区免费在线播放 | 欧美日韩在线电影 | 成人国产免费视频 | 欧美日韩国产一区二区三区 | 午夜精品一区 | 午夜在线观看 | 搞黄免费视频 | 亚洲视频在线观看免费 | 国产在线视频网站 | 一区视频 | 国产露脸国语对白在线 | 日韩精品一区二区三区在线 | 免费的黄视频 | 在线观看免费黄视频 | 欧美日韩一区二区三区在线电影 | 国产2区 | 四虎影视在线 |