Hibernate框架簡介①
這個Hibernate框架系列是使用配置文件的方式來搭建的(非注解方式)
搭建環境:
引包: 鏈接:https://pan.baidu.com/s/1tqCg1HYwQaW86HDW6s2rLg 密碼:upj1
創建實體類User:
package com.rl.hiber.model;
import java.util.Date;
public class User {
private int userId;
private String uname;
private int gender;
private Date birthday;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
映射文件User.hbm.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.rl.hiber.model.User" table="t_user">
<id name="userId" column="user_id">
<generator class="assigned"></generator>
</id>
<property name="pname" column="pname"></property>
<property name="gender" column="gender"></property>
<property name="birthday" column="birthday"></property>
</class>
</hibernate-mapping>
配置文件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">
<hibernate-configuration>
<session-factory>
<!-- 數據庫連接設置 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hiber01</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 設置數據庫連接池初始化連接數 -->
<property name="connection.pool_size">1</property>
<!-- 數據庫方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 是否在后臺展示數據庫 -->
<property name="show_sql">true</property>
<!-- 配置實體類映射文件的位置 -->
<mapping resource="com/rl/hiber/model/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
接下來需要創建數據庫hiber01, 這里不贅述
提供一個工具類, 該工具類能夠自動生成建表腳本, 幫助我們自動建表
DBExport:
package com.rl.hiber.utils;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
/**
* 工具類: 自動建表
* @author Administrator
*/
public class DBExport {
public static void main(String[] args) {
//創建hibernate的配置對象
Configuration cfg = new Configuration();
//指定hibernate配置文件的位置
cfg.configure("hibernate.cfg.xml");
//創建表的對象
SchemaExport se = new SchemaExport(cfg);
se.create(true, true);
}
}
查看數據庫結果:
測試代碼:
package com.rl.hiber.test;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.junit.Test;
import com.rl.hiber.model.User;
public class TestHibernate {
@Test
public void test() {
Configuration cfg = new Configuration();
//配置hibernate核心文件的位置
cfg.configure("hibernate.cfg.xml");
//注冊配置屬性信息
ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
//創建SessionFactory對象, 該對象非常大, 一個項目啟動多久, 該SessionFactory就運行多久
SessionFactory factory = cfg.buildSessionFactory(sr);
//打開session
Session session = factory.openSession();
//需要先開啟事務
Transaction tx = session.beginTransaction();
//創建對象
User user = new User();
user.setUserId(1);
user.setUname("zhangsan");
user.setGender(1);
user.setBirthday(new Date());
//保存user對象到數據庫中
session.save(user);
//事務提交
tx.commit();
//關閉session節省資源
session.close();
}
}
數據庫結果:
下面簡單介紹一下hibernate的配置文件(涉及到兩個配置文件 分別是hibernate.cfg.xml和xxx.hbm.xml)
數據庫連接的配置:
必選配置(數據庫連接配置, 注冊映射文件)
可選配置:
數據庫連接池, 數據庫方言(各種數據的方言自行百度), 是否輸出sql
高級配置:
由于自帶的連接池功能太弱, 因此將數據庫連接池修改成c3p0的連接池:
建表策略(提一下, 不重要了解即可, 默認使用none):
<property name="hbm2ddl.auto">none</property>
這句可不配置, 默認就none
總共有四個狀態:
none: 什么都不做
create: 每次執行hibernate的操作是都先刪表再建表
create-drop: 每次執行hibernate操作時都先建表再填入數據, 且SessionFactory一旦關閉則將表全部刪除
validate: 每次執行hibernate操作時就驗證數據庫的表和mapping的關系是否正確
智能推薦
Hibernate框架
Hibernate是一個開放源代碼的對象關系映射框架(ORM),它對JDBC進行了非常輕量級的對象封裝,簡化了java應用程序與數據庫交互的開發。簡化了數據創建,數據處理和數據訪問。 ①面向對象操作:將對數據庫的操作轉換為對Java對象的操作。 ②數據庫獨立查詢:通過配置對應的數據庫“方言”,就可以根據不同類型的數據庫生成適合的SQL語句。 ③非侵入式:Hibernate不...
Hibernate框架
Hibernate框架 1、簡介 Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在S...
MyBatis簡介和Hibernate簡介
MyBatis簡介 MyBatis的前身是Apache的開源項目iBatis。iBatis一次來源于internet,和abatis的組合,是一個基于Java持久層架構。2010年這個項目由Apache software foundation遷移到Google code,并更名為MyBatis。2013年11月,MyBatis遷移到Github上,目前由Github提供維護。 MyBatis的優勢...
Hibernate配置和簡介
Hibernate構架 Hibernate 什么是hibernate? 在了解hibernate之前我們先來了解一下什么是ORM: ORM是怎么工作的? hibernate概念: hibernate的優點: Hibernate環境配置 在eclipse上配置Hibernate 在IDEA上配置Hibernate Hibernate配置步驟: Hibernate的核心接口 1.Configurati...
Hibernate 框架學習——Hibernate注解
前言 在Hibernate中我們一般都會使用注解,這樣可以幫助我們大大簡化hbm映射文件的配置。下面我就來為大家詳細介紹。 PO類注解配置 首先肯定是搭建好Hibernate的開發環境啦,我在此也不過多贅述,讀者自行實踐。接著在src目錄下創建一個cn.itheima.domain包,并在該包下創建一個Book實體類,由于Book實體類中寫有注解配置,所以就不用編寫那個映射配置文件啦! 下面我就來...
猜你喜歡
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壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...