我們總共需要做五件事
1:製造數據
1.1 在數據庫中創建一個名爲test的數據庫
create database test
1.2創建數據表
create TABLE product(
int id(10) NOT NULL AUTO_INCREMENT,
name char(10),
price float(10),
primary key (id)
)DEFAULT CHARSET utf8;
2:創建一個project工程(你們應該也會用eclipse吧,應該會)
2.1創建一個java工程
2.2:幹活,把jar包乾進去,我們先把jar包放到lib文件夾中,然後把加到路徑中去(別忘了)
2.3:創建實體類Product,和數據庫中的一一對應
package com.ccut.pojo;
public class Product {
private int id;
private String name;
private float price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
}
2.4:配置Product.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 package="com.ccut.pojo">
<class name="Product" table="product_">
<!--儘量避免使用複雜的物理主鍵,應該爲數據庫增加一列,作爲邏輯主鍵,hibernate爲這種邏輯主鍵提供了主鍵生成器,用<generator>元素來指定主鍵的生成器
該元素的作用是指定主鍵的生成器 -->
<id name="id" column="id">
<!--native是Hibernate主鍵生成器的實現算法之一,由Hibernate根據底層數據庫自行判斷採用identity、hilo、sequence其中一種作爲主鍵生成方式。 -->
<generator class="native">
</generator>
</id>
<!--普通屬性用<property>元素來表示持久化類的屬性與數據庫表字段之間的映射 -->
<property name="name" column="names" />
<property name="price" />
</class>
</hibernate-mapping>
2.5配置hiberante.config.xml文件(我們一般把它放到src文件目錄下面,)
<?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>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8</property>
<property name="connection.characterEncoding">utf-8</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!--上面的不用解釋了,應該能看動-->
<!--dialect mysql方言 這個傢伙又什麼用呢 ,在代碼層面,開發人員不用關心底層到底用Oracle還是Mysql,
寫的代碼都是一樣的。 可是Oracle和Mysql所用的sql語句的語法是有所區別的,那麼這件事就交給Hibernate來做了。這個時候就需要告訴Hibernate底層用的是什麼數據庫,
它才知道應該用什麼樣的“方言” 去對話。 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--hibrnate事物管理,一個線程事物 -->
<property name="current_session_context_class">thread</property>
<!--控制檯下面是否打印我們的sql語句 -->
<property name="show_sql">true</property>
<!-- 這表示是否會自動更新數據庫的表結構,有這句話,其實是不需要創建表的,因爲Hibernate會自動去創建表結構 (博客第一大步其實可以跳過,不好意思給你們埋個坑)-->
<property name="hbm2ddl.auto">update</property>
<!--我感覺是找配置文件去了 -->
<mapping resource="com/ccut/pojo/Product.hbm.xml" />
</session-factory>
</hibernate-configuration>
2.6:是時候來波測試是否好使不好使了(測試類)(代碼安1,2,3.4步看)(1.1,1.2,1.3是另外一種得到sessionFactory的方法)
package com.ccut.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import com.ccut.pojo.Product;
public class TestHibernate {
public static void main(String[] args) {
// //1 是4 版本得到 獲得sessionfactor (默認加載src下的hibernate.cfg.xml文件)
// SessionFactory sf = new Configuration().configure().buildSessionFactory();
//1.1:讀取hibernate配置文件
Configuration cfg = new Configuration().configure("com/ccut/conf/hibernate.cfg.xml");
//1.2和1.1是 hibernate 5版本得到sessionfactory
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
//1.3 從ServiceRegistry得到sessionfactor
SessionFactory sf=cfg.buildSessionFactory(serviceRegistry);
//2:得到一個session
Session s = sf.openSession();
//3:得到一個事物
s.beginTransaction();
Product p = new Product();
p.setName("iphone飛");
p.setPrice(7000);
//4:通過調用session中的save方法把對象保存到數據中
s.save(p);
//5:事物提交
s.getTransaction().commit();
//6:關閉session
s.close();
//7:關閉sessionfactor
sf.close();
}
}
3:結果,收工
2
原代碼下載地址