Hibernate學習筆記 -- day01 Hibernate介紹及入門案例環境搭建
一、什么是ORM
object Relation Mapping:對象關系映射,即把實體類和數據庫表建立起來的對應關系
二、Hibernate開發包介紹
三、搭建 Hibernate 的前期開發環境
1、創建數據庫,導入數據
/*創建客戶表*/
CREATE TABLE `cst_customer` (
`cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客戶編號(主鍵)',
`cust_name` varchar(32) NOT NULL COMMENT '客戶名稱(公司名稱)',
`cust_source` varchar(32) DEFAULT NULL COMMENT '客戶信息來源',
`cust_industry` varchar(32) DEFAULT NULL COMMENT '客戶所屬行業',
`cust_level` varchar(32) DEFAULT NULL COMMENT '客戶級別',
`cust_address` varchar(128) DEFAULT NULL COMMENT '客戶聯系地址',
`cust_phone` varchar(64) DEFAULT NULL COMMENT '客戶聯系電話',
PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8;
/*創建聯系人表*/
CREATE TABLE `cst_linkman` (
`lkm_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '聯系人編號(主鍵)',
`lkm_name` varchar(16) DEFAULT NULL COMMENT '聯系人姓名',
`lkm_gender` char(1) DEFAULT NULL COMMENT '聯系人性別',
`lkm_phone` varchar(16) DEFAULT NULL COMMENT '聯系人辦公電話',
`lkm_mobile` varchar(16) DEFAULT NULL COMMENT '聯系人手機',
`lkm_email` varchar(64) DEFAULT NULL COMMENT '聯系人郵箱',
`lkm_position` varchar(16) DEFAULT NULL COMMENT '聯系人職位',
`lkm_memo` varchar(512) DEFAULT NULL COMMENT '聯系人備注',
PRIMARY KEY (`lkm_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
2、創建java工程,導入jar包
(1)、9個必要的jar包
(2)、3個日志依賴的包
(3)、mysql數據庫驅動包
3、根據數據庫編寫對應的實體類
package cn.itcast.domain;
import java.io.Serializable;
/**
* 客戶的實體類
*
* @Description: TODO
* @author wingzhe
* @date 2017年7月26日 下午1:54:44
* @version V1.0
*/
public class Customer implements Serializable {
private Long custId;
private String custName;
private String custSource;
private String custIndustry;
private String custLevel;
private String custAddress;
private String custPhone;
public Long getCustId() {
return custId;
}
public void setCustId(Long custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCustSource() {
return custSource;
}
public void setCustSource(String custSource) {
this.custSource = custSource;
}
public String getCustIndustry() {
return custIndustry;
}
public void setCustIndustry(String custIndustry) {
this.custIndustry = custIndustry;
}
public String getCustLevel() {
return custLevel;
}
public void setCustLevel(String custLevel) {
this.custLevel = custLevel;
}
public String getCustAddress() {
return custAddress;
}
public void setCustAddress(String custAddress) {
this.custAddress = custAddress;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
}
4、編寫實體類對應的映射文件
(1)、導入dtd約束文件
(2)、編寫映射文件內容
<?xml version="1.0" encoding="UTF-8"?>
<!-- 導入dtd約束:約束文件在hibernate的核心jar包中
hibernate-mapping-3.0.dtd
它是建立實體類和數據庫表的映射文件
里面應該包含的內容有:
實體類和數據庫表的對應關系
實體類中屬性和表中列的對應關系
-->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.domain"><!-- package用于導入一個包,接下來再配置文件中再出現此包的類都可以不用導了。 -->
<!-- class標簽:
作用:
用于建立實體類和表的對應關系
屬性:
name:實體類的名稱
table:數據庫的表名
-->
<class name="Customer" table="cst_customer">
<!-- id標簽:
作用:用于映射主鍵
屬性:
name:指定實體類中屬性的名稱(注意它找的是get/set方法后面的部分。不是私有成員變量名稱)
column:指定的數據庫表的列名稱
-->
<id name="custId" column="cust_id">
<!-- generator標簽:
作用:指定主鍵的生成策略
取值是hibernate提供的。
我們今天只用一種:native
它的含義:使用本地數據庫的自動增長能力。
-->
<generator class="native"></generator>
</id>
<!-- property標簽:
作用:映射其他字段。
屬性:
name:指定的是實體類中屬性get/set方法后面的部分。
column:指定的數據庫表的列名稱
-->
<property name="custName" column="cust_name"></property>
<property name="custSource" column="cust_source"></property>
<property name="custIndustry" column="cust_industry"></property>
<property name="custLevel" column="cust_level"></property>
<property name="custAddress" column="cust_address"></property>
<property name="custPhone" column="cust_phone"></property>
</class>
</hibernate-mapping>
5、配置hibernate核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- hibernate的主配置文件,里面配置的都是和連接數據庫相關的 -->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 配置SessionFactory:
SessionFactory它的作用就是用于生產Session對象的
Session干嗎的,它就是和數據庫交互的。用于對數據庫表進行增刪改查的。
此配置文件不需要大家背下來。但是必須要知道:
創建SessionFactory必須由3部分信息組成。
第一部分:連接數據庫的信息
第二部分:hibernate的基本配置
第三部分:映射文件的位置
配置文件的key都在:\hibernate-release-5.0.7.Final\project\etc\hibernate.properties中
-->
<session-factory>
<!-- 1、連接數據庫的信息 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/day36_ee247_hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">1234</property>
<!-- 2、hibernate的基本配置 -->
<!-- 數據庫的方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 是否顯示SQL語句 -->
<property name="hibernate.show_sql">true</property>
<!-- 是否格式化SQL語句 -->
<property name="hibernate.format_sql">true</property>
<!-- 選擇生成DDL語句的策略
它只能用于更新表結構,不能用于創建數據庫
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 3、指定映射文件的位置 -->
<mapping resource="cn/itcast/domain/Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>
智能推薦
C#編程學習入門-Day01
C#編程學習入門-Day01=2020/2/7 使用書籍為《C#入門經典(第七版)》清華大學出版社 編程工具使用Microsoft Visual Studio 2017 書中推薦當時的最新版vs2015,我電腦上剛好有安裝好的2012和2017,所以在這里選擇了使用2017 本書第一章介紹了.net編程和C#, 第二章 第二章開始進入基礎編程 點擊工具選項卡,導入和導出設置 將工具重置為C# 開始...
【學習筆記-SSH框架】Hibernate入門-筆記01-搭建Hibernate應用環境及實現增刪查改功能、以及Query、Criteria查詢
Hibernate入門-筆記01-搭建Hibernate應用環境及實現增刪查改功能、以及Query、Criteria查詢 目錄 使用Maven搭建Hibernate項目 自頂向下開發Hibernate應用步驟 封裝Hibernate工具類 實現增刪查改功能 使用Query進行HQL查詢 使用Criteria進行條件查詢 POJO狀態 1. 使用Maven搭建Hibernate項目 在IDE中創建m...
Hibernate框架學習筆記01
1:hibernate是什么 (1)框架是什么 1.框架是用來提高開發效率的 2.封裝好了一些功能.我們需要使用這些功能時,調用即可.不需要再手動實現. 3.所以框架可以理解成是一個半成品的項目.只要懂得如何駕馭這些功能即可. (2)hibernate框架是什么 (3)hibernate的好處 操作數據庫的時候,可以以面向對象的方式來完成.不需要書寫SQL語句 (4)hibernate是一款orm...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
猜你喜歡
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...