這篇文章主要介紹了hibernate環(huán)境搭建測(cè)試的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)專(zhuān)注于方山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供方山營(yíng)銷(xiāo)型網(wǎng)站建設(shè),方山網(wǎng)站制作、方山網(wǎng)頁(yè)設(shè)計(jì)、方山網(wǎng)站官網(wǎng)定制、微信小程序定制開(kāi)發(fā)服務(wù),打造方山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供方山網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
真正要掌握,還得需要自己動(dòng)手,才能豐衣足食。
所需jar包
jar包版本不同,找的地址也不同。這里用到的是 hibernate-release-5.2.10 版本的jar包

除了這些jar包,還需要數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar,根據(jù)自己用的數(shù)據(jù)庫(kù)自定,這里用到的是oracle
2.jar包導(dǎo)入好,看看配置,在配置之前,看下實(shí)體和表結(jié)構(gòu)。
實(shí)體 Users
package com.hib.entity;
public class Users {
private Integer id;
private String name;
private String pass;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Users(Integer id, String name, String pass, String address) {
super();
this.id = id;
this.name = name;
this.pass = pass;
this.address = address;
}
public Users() {
super();
}
@Override
public String toString() {
return "Users [id=" + id + ", name=" + name + ", pass=" + pass + ", address=" + address + "]";
}
}
表結(jié)構(gòu)

在src下 hibernate.cfg.xml配置,如果不知道里面的配置怎么寫(xiě)。可以通過(guò)在下載的jar包中搜索hibernate.cfg.xml,里面有配置信息。
hibernate.cfg.xml 配置如下
<!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="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property> <property name="hibernate.connection.username">ssh</property> <property name="hibernate.connection.password">ssh</property> <property name="hibernate.connection.url">jdbc:oracle:thin:@127.0.0.1:1521:xe</property> <!-- 方言 --> <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> <!-- 可視化sql --> <property name="hibernate.show_sql">true</property> <!-- 格式化sql,自動(dòng)對(duì)可視化sql換行,對(duì)齊 --> <property name="hibernate.format_sql">true</property> <!-- 映射文件配置 --> <mapping resource="User.hbm.xml"/> </session-factory> </hibernate-configuration>
3. User.hbm.xml配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping> <!-- name:是實(shí)體 table是表名稱(chēng) --> <class name="com.hib.entity.Users" table="TEST_USER"> <id name="id"> <!-- 主鍵自增策略,在下面會(huì)專(zhuān)門(mén)提到 --> <generator class="increment"></generator> </id> <!-- name:是實(shí)體中屬性的名稱(chēng),column:是表中字段的名稱(chēng),type是數(shù)據(jù)類(lèi)型 在這里發(fā)現(xiàn)后面的 pass和 address 沒(méi)有寫(xiě)column和type 如果表字段和實(shí)體屬性名稱(chēng)一致,可以省略不寫(xiě) --> <property name="name" column="name" type="java.lang.String"/> <property name="pass"/> <property name="address"/> </class> </hibernate-mapping>
4.測(cè)試數(shù)據(jù)連接是否配置成功
package com.hib.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.hib.entity.Users;
public class TestConn {
// 獲取session
public static Session getSession(){
// 加載配置
Configuration cfg = new Configuration().configure();
// 獲取sessionFactory
SessionFactory factory = cfg.buildSessionFactory();
// 獲取session
Session session = factory.openSession();
return session;
}
// 查詢(xún)
@Test
public void query(){
Session session = getSession();
// 查詢(xún)
Users users = session.get(Users.class, 1);
System.out.println(users);
//關(guān)閉資源
session.close();
}
// 在進(jìn)行增刪改時(shí) ,好控制事務(wù) ---- 插入
@Test
public void insert(){
Session session = getSession();
// 開(kāi)啟事務(wù)
Transaction tx = session.beginTransaction();
Users users = new Users(null, "xyz", "xyz", "china");
// 插入
session.save(users);
// 事務(wù)提交
tx.commit();
// 事務(wù)回滾
//tx.rollback();
session.close();
}
// 更新數(shù)據(jù)前 需要先查詢(xún)出修改的數(shù)據(jù)
@Test
public void update(){
Session session = getSession();
Transaction tx = session.beginTransaction();
Users users = session.get(Users.class, 1);
users.setAddress("鄭州");
users.setName("小李飛刀");
session.update(users);
tx.commit();
session.close();
}
// 刪除 需要先出現(xiàn)出刪除的數(shù)據(jù)
@Test
public void delete(){
Session session = getSession();
Transaction tx = session.beginTransaction();
Users users = session.get(Users.class, 1);
session.delete(users);
tx.commit();
session.close();
}
}
這里講解下關(guān)于hibernate中主鍵的生成策略
increment 一般用于測(cè)試,多并發(fā)環(huán)境中存在主鍵取值沖突,這里文章包括下面寫(xiě)的都是用的
這個(gè),方便測(cè)試。實(shí)際項(xiàng)目中,沒(méi)有人會(huì)用到。
2. sequence oralcle數(shù)據(jù)庫(kù)專(zhuān)用
在oracle數(shù)據(jù)庫(kù)中創(chuàng)建序列 : create sequence st_id start with 7 increment by 1;
意思是:創(chuàng)建序列名為 st_id 從7開(kāi)始,每次增加1
hibernate中默認(rèn)值是 hibernate_sequence
<id name="id">
<generator class="sequence">
<param name="sequence_name">st_id</param>
</generator>
</id>
3. identity :適用于MySQL sqlserver 相當(dāng)于2
<id name="id">
<generator class="identity"></generator>
</id>
4. uuid 生成32位長(zhǎng)度全球唯一的字符串,適用于分布式系統(tǒng)中
5. foreign : 專(zhuān)用于1:1 共享主鍵的從表方
6. assigned: 手動(dòng)指定ID,一般不用
這里值得一提:在使用sequence時(shí),配置文件中寫(xiě)
<id name="id" column="id">
<generator class="sequence">
這里 name為 sequence_name,但我當(dāng)時(shí)配置時(shí)候?qū)懙氖莝equence,出了錯(cuò)。搜了好久,也沒(méi)有發(fā)現(xiàn)錯(cuò)誤,并且別人寫(xiě)的也是sequence。這里我也沒(méi)有去看其他版本,這里我使用是5.2版,可能是版本之間的問(wèn)題。希望注意下。如果你不知道配置是sequence 還是sequence_name,可以搜當(dāng)前版本的文件 sequence,會(huì)有一些文件和文件夾,找里面的配置,看里面寫(xiě)的是什么。
<param name="sequence_name">sqs_id</param>
</generator>
</id>
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“hibernate環(huán)境搭建測(cè)試的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
分享名稱(chēng):hibernate環(huán)境搭建測(cè)試的示例分析
網(wǎng)站網(wǎng)址:http://www.yijiale78.com/article2/ihdeic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、企業(yè)網(wǎng)站制作、搜索引擎優(yōu)化、標(biāo)簽優(yōu)化、用戶(hù)體驗(yàn)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)