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框架簡介④框架
- Hibernate框架簡介③框架
- Hibernate框架簡介②框架
- 手寫 Hibernate ORM 框架 00-hibernate 簡介ORM框架
- Hibernate Reactive 簡介React
- Hibernate資料校驗簡介
- Scrapy框架簡介框架
- HTML 框架簡介HTML框架
- Flask 框架簡介Flask框架
- Django框架簡介Django框架
- graphicsview框架簡介View框架
- Spring+Struts+Hibernate 簡介(轉)Spring
- Spring框架簡介⑩Spring框架
- Spring框架簡介⑨Spring框架
- Spring框架簡介⑧Spring框架
- SpringMVC框架簡介②SpringMVC框架
- SpringMVC框架簡介①SpringMVC框架
- [轉]SSH框架簡介框架
- Spring框架簡介⑦Spring框架
- Spring框架簡介⑥Spring框架
- Spring框架簡介⑤Spring框架
- Spring框架簡介④Spring框架
- Spring框架簡介③Spring框架
- Spring框架簡介②Spring框架
- Spring框架簡介①Spring框架
- [原]ZolltyMVC框架簡介MVC框架
- 【SSH】--SSH框架簡介框架
- wsgiref模組、web框架、django框架簡介Web框架Django
- spring框架——Spring框架簡介Spring框架
- hibernate一二級快取簡單介紹快取
- Hibernate框架框架
- Flutter路由框架Fluro簡介Flutter路由框架
- uni-app 框架簡介APP框架
- 關於Struts框架簡介框架
- Hibernate 框架理解框架
- Java集合框架系列教程一:集合框架簡介Java框架
- OSX 攻擊框架Empyre簡介框架