前提:
建一個(gè)數(shù)據(jù)庫
步驟:
一.導(dǎo)包(hibernate\lib\required下10個(gè)+日志2個(gè)+mysql驅(qū)動(dòng)1個(gè))
二.實(shí)體類(提供屬性)
三.兩個(gè)文件(.cfg.xml+.hbm.xml)
四.測(cè)試類(使用)
一馒疹、導(dǎo)包
1.導(dǎo)入hibernate所用的包
2.導(dǎo)入mysql驅(qū)動(dòng)的jar包(驅(qū)動(dòng)的第一次使用)
3.導(dǎo)入兩個(gè)日志包
前提:
idea載入數(shù)據(jù)庫
View → Tool Windows → database → Data Source Properties → My SQL
地址localhost或者127.0.0.1都是本地
把數(shù)據(jù)庫驅(qū)動(dòng)加上(驅(qū)動(dòng)第二次使用)
二.創(chuàng)建實(shí)體類
TestEntity(基本就是getter and setter)
package com;
public class TestentityEntity {
private int Tid;
private String Tname;
public int getTid() {
return Tid;
}
public void setTid(int tid) {
Tid = tid;
}
public String getTname() {
return Tname;
}
public void setTname(String tname) {
Tname = tname;
}
}
三.創(chuàng)建映射文件
TestentityEntity.hbm.xml (idea自己寫會(huì)出現(xiàn)找不到表名解決方案在后面)
放在src目錄下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- name代表的是實(shí)體類名佳簸,table代表的是表名 -->
<class name="com.TestentityEntity" table="entity1">
<!-- name=id代表的是customer類中屬性 column=id代表的是table表中的字段 -->
<id name="tid" column="id">
<!-- 主鍵生成策略 -->
<generator class="native"/>
</id>
<!-- 其他屬性使用property標(biāo)簽來映射 -->
<property name="tname" column="username" type="string"/>
</class>
</hibernate-mapping>
第二個(gè)文件 hibernate.cfg.xml
<hibernate-configuration>
<!-- 通常,一個(gè)session-factory節(jié)點(diǎn)代表一個(gè)數(shù)據(jù)庫 -->
<session-factory>
<!-- 1. 數(shù)據(jù)庫連接配置 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test1</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!-- 數(shù)據(jù)庫方法配置颖变, hibernate在運(yùn)行的時(shí)候生均,會(huì)根據(jù)不同的方言生成符合當(dāng)前數(shù)據(jù)庫語法的sql -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL57Dialect</property>
<!-- 2. 其他相關(guān)配置 -->
<!-- 2.1 顯示hibernate在運(yùn)行時(shí)候執(zhí)行的sql語句 -->
<property name="hibernate.show_sql">true</property>
<!-- 2.2 格式化sql -->
<property name="hibernate.format_sql">true</property>
<!--3. 加載所有映射-->
<mapping resource="com/TestentityEntity.hbm.xml"/>
</session-factory>
</hibernate-configuration>
加載映射的位置是映射文件.hbm.xml所在位置
四.創(chuàng)建測(cè)試類
import com.TestentityEntity;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;
public class Test {
public static void main(String[] args) {
//創(chuàng)建對(duì)象
TestentityEntity user = new TestentityEntity();
user.setTid(3);
user.setTname("doro");
//獲取加載配置管理類
Configuration configuration = new Configuration();
//不給參數(shù)就默認(rèn)加載hibernate.cfg.xml文件听想,
configuration.configure();
//創(chuàng)建Session工廠對(duì)象
SessionFactory factory = configuration.buildSessionFactory();
//得到Session對(duì)象
Session session = factory.openSession();
//使用Hibernate操作數(shù)據(jù)庫,都要開啟事務(wù),得到事務(wù)對(duì)象
Transaction transaction = session.getTransaction();
//開啟事務(wù)
transaction.begin();
//把對(duì)象添加到數(shù)據(jù)庫中
session.save(user);
//提交事務(wù)
transaction.commit();
//關(guān)閉Session
session.close();
}
}
查看數(shù)據(jù)庫
遇到問題:
dos下net start mysql 打不開mysql
問題原因:mysql服務(wù)沒有安裝疯特。
解決辦法: 在 mysql bin目錄下 以管理員的權(quán)限 執(zhí)行 mysqld -install命令
然后仍然以管理員的權(quán)限 net start mysql 開啟Mysql服務(wù)了哗魂。
1、以管理員的權(quán)限 net stop mysql 漓雅,關(guān)閉mysql服務(wù)
2录别、以管理員的權(quán)限 mysqld -remove ,卸載mysql服務(wù)
上面說到的映射文件找不到表位置
原因:映射文件沒匹配上
數(shù)據(jù)庫創(chuàng)建指令
未解決疑問
分不清屬性名是tid還是Tid
在hbm.xml文件中屬性名無論是tid還是Tid都能成功邻吞。