hibernate-筆記
什麽是 hibernate 框架
1.hibernate 框架應用在 javaee 三次結構中 dao 層框架
2.在dao 層裏面對數據庫做curd 操作, 使用hibernate
做crud 操作, hibernate 底層代碼就是jdbc, hibernate
對 jdbc 進行封裝,使用hidernate 好處,不需要寫復雜的jdbc 代碼了,不需要寫sql 語句實現。
什麽是orm 思想
1.hidernate 使用orm 思想對數據庫進行crud 操作
2.在web 階段學習, javabean, 更正叫法為實體類
3.orm object relational mapping, 對象關系映射
1.讓實體類和數據庫表進行一一對應關系。
讓實體類首先和數據表對象,
讓實體類屬性 和 表裏面字段對應
2.不需要直接操作數據庫,而操作表對應實體類對象。
搭建 hibernate 環境
第一步:導入hibernate 的jar 包
因為用hibernate 的時候,有日誌文件輸出,hibernate 本身沒有
日誌輸出的jar 包,導入其他日誌輸出的jar 包
第二步創建實體類
1.使用hibernate 的時候,不需要自己手動創建表hibernate 會自動創建好。
第三步,配置數據庫和實體類一一對應關系。(映射)
使用配置文件來完成映射的關系。
1.創建xml 格式的配置文件
映射配置文件名稱和位置沒有固定的要求建議,在實體類所在包裏創建,實體類名稱 hbm.xml
2.配置是xml格式,在配置文件中首先引入xml約束
學過約束dtd , schema, 在hibernate 裏面引入的約束dtd 約束
3.配置映射關系
<hibernate-mapping>
<!--1.配置類和表對應
class 標簽
name 屬性,實體類全路徑
table 屬性,數據庫表名稱
-->
<class name="cn.itcast.entity.User" table="t_user">
<!-- 2.配置實體類id 和表id 對應
hibernate 要求實體類有一個屬性唯一值
hibernate 要求表有字段作為唯一值
-->
<!-- id 標簽
name 屬性, 實體類裏面id 屬性名稱
column 屬性, 生成的表字段名稱
-->
<id name="uid" column="uid">
<!-- 設置數據庫表id增長策略
native 生成表id 值就是主鍵自動增長
-->
<generator class="native"></generator>
</id>
<!-- 配置其他屬性和表字段對應
name 屬性,實體類屬性名稱
column 屬性,字段名稱
-->
<propert name="username" column="username"></propert>
<propert name="password" column="password"></propert>
<propert name="address" column="address"></propert>
</class>
</hibernate-mapping>
第四步創建hibernate 的核心配置文件
1.核心配置文件格式xml,但是核心配置文件
名稱和位置固定的,位置必須在src 下
名稱必須 hibernate.cfg.xml
2.引入dtd 約束
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
3.hibernate 操作過程中,只會加載核心配置文件
其他配置文件不會加載。
第一部分,配置數據庫的信息
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
第二部分,配置hibernate 信息
<!-- 第二部分,配置hibernate 信息 -->
<!-- 輸出底層的sql語句 -->
<property name="hibernate.show_sql">true</property>
<!-- 輸出底層sql語句格式 -->
<property name="hibernate.format_sql">true</property>
<!-- hibernate 幫創建表,需要配置之後
update: 如果有表進行更新,如果沒表進行創建
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 配置數據庫的方言
在mysql 裏面實現分頁, 關鍵字limit ,只能使用mysql裏面
在oracle 數據庫裏面 實現分頁 rownum
讓hibernate 框架識別不同數據庫的語句
-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
實現添加操作
第一步 加載hibernate 核心文件
第二步 創建 SessionFactory 對象
第三步 使用SessionFactory 創建session 對象
第四步 開啟事務
第五步 寫具體邏輯 crud 操作
第六步 提交事物
第七步 關閉資源
Hibernate 核心api
Configuration
1.代碼
Configuration cfg = new Configuration();
cfg.configure();
Session Factory
Session
session 類似於jdbc 中 connection
調用session 裏面的方法實現 crud 操作
1.添加 save 方法
2.修改 update 方法
3.刪除 delete 發放
4 根據id 查詢 get 方法。
session 對象單線程
Transaction
1.事務對象
開啟事務對象
Transaction tx = session.beginTransaction();
事務提交回滾方法。
tx.commit();
tx.rollback();
事務四個概念
原子性(一組要麽都成功,要麽都失敗),一致性,隔離性,持久性
工具類是抽取
實體類的編寫規則
1.實體類裏面屬性私有的
2.私有屬性使用公開的set 和get 方法進行操作。
3.要求實體類有唯一屬性作為唯一值(一般都使用id值)
4.實體類屬性建議不適用基本數據類型,使用基本數據類型對應的包裝類型。
hibernate 主鍵生成策略
實體類的操作
添加操作
根據id 查詢
調用session 裏面的get 方法實現
// 添加功能
User user = new User();
user.setUsername("小王");
user.setPassword("250");
user.setAddress("日本");
// 調用session 的方法實現添加
session.save(user);
修改操作
先查詢,修改值
1根據id 查詢,返回對象
刪除操作
實體類對象狀態
1.瞬時態,對象裏面沒有id值,對象與session 沒關聯。
2.持久態 對象裏面有id 值,對象與session 有關聯。
3.托管態 對象有id值,對象與sesion 沒關聯
hibernate 一級緩存
hibernate 事務操作
事務相關概念
hibernate-筆記