日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hibernate02环境的搭建

發(fā)布時(shí)間:2025/7/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate02环境的搭建 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

hibernate: 持久層的框架!
是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架(ORM)!之前我們?cè)L問數(shù)據(jù)庫使用JDBC!
對(duì)JDBC進(jìn)行了輕量級(jí)的對(duì)象封裝!是一個(gè)全自動(dòng)ORM框架!(底層可以自動(dòng)生成sql語句)!
使用面向?qū)ο蟮乃枷雭聿僮鲾?shù)據(jù)庫!

?

創(chuàng)建一個(gè)java項(xiàng)目

引入需要的hibernate需要的jar包以及連接數(shù)據(jù)庫需要的驅(qū)動(dòng)包

把jar包放入項(xiàng)目中并引用

?

?創(chuàng)建對(duì)應(yīng)的學(xué)生類

/*** 學(xué)生的實(shí)體類*/ public class Student {private Integer id;private Integer age;private String name;// 和數(shù)據(jù)庫中不一致 (sname)public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Student(Integer id, Integer age, String name) {super();this.id = id;this.age = age;this.name = name;}public Student() {super();}@Overridepublic String toString() {return "Student [id=" + id + ", age=" + age + ", name=" + name + "]";}}

創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)庫中的學(xué)生表

找到對(duì)應(yīng)mapping映射文件,放在和實(shí)體類相同的包下!并修改其中的內(nèi)容

?

修改Student.hbm.xml文件之后的內(nèi)容

<?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"><!-- 映射文件 M 目的;實(shí)體類和 數(shù)據(jù)庫中的表 產(chǎn)生關(guān)系 package:是說明我們需要映射的實(shí)體類的包名 class name:對(duì)應(yīng)的是實(shí)體類的名稱(如果省略了package屬性,必須書寫全類名) property,id name:對(duì)應(yīng)的是實(shí)體類中的屬性名,如果和數(shù)據(jù)庫中的字段一致,則可以省略column--> <hibernate-mapping package="cn.bdqn.bean"><class name="Student" table="stu"><id name="id"><!--主鍵生成策略 assigned:主鍵的生成值完全由用戶決定,與底層數(shù)據(jù)庫無關(guān)。在調(diào)用session.save()之前必須指定主鍵值,否則會(huì)拋出異常!--><generator class="assigned"/></id><!--配置其他屬性的映射 --><property name="age"/><property name="name" column="sname"/></class> </hibernate-mapping>

找到hibernate核心的配置文件并修改內(nèi)容?

?

?

修改后的hibernate.cfg.xml文件內(nèi)容

<!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.url">jdbc:oracle:thin:@localhost:1521:orcl</property><property name="connection.username">t10</property><property name="connection.password">t10</property><property name="connection.driver_class">oracle.jdbc.OracleDriver</property><!--方言 --><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><!--是否顯示底層生成的sql語句 --><property name="show_sql">true</property><!--格式化生成的sql語句 --><property name="format_sql">true</property><!--加載我們配置的映射文件 全路徑 --><mapping resource="cn/bdqn/bean/Student.hbm.xml" /></session-factory> </hibernate-configuration>

創(chuàng)建對(duì)應(yīng)的測(cè)試類

package cn.bdqn.test;import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test;import cn.bdqn.bean.Student;/*** * @author 小豆腐* 以后的你,會(huì)感謝現(xiàn)在努力的自己!努力!堅(jiān)持!不放棄!* * hibernate核心的* 1個(gè)類* 01. 類 Configuration !對(duì)核心配置文件的讀取! * 5個(gè)接口 * 01. SessionFactory:負(fù)責(zé)初始化hibernate需要的參數(shù)!在程序中有一個(gè)就夠了!之后我們會(huì)寫成單例模式! * 02. Session:不是我們的HttpSession(用戶session)! 我們hibernate的session* 是用來操作對(duì)象(增刪改查)!創(chuàng)建事務(wù)的對(duì)象!我們現(xiàn)在使用的session不是線程安全的! * 03. Transaction :進(jìn)行事務(wù)的操作!* 04. Query :hibernate中查詢的接口(sql , hql)* 05. Criteria :和Query相似!但是做了一些封裝! */ public class StudentTest {// 新增學(xué)生信息 @Testpublic void addStudent() {/*** 01.讀取核心配置文件 因?yàn)槲覀冃枰男畔⒍荚谶@個(gè)核心配置文件中(連接數(shù)據(jù)庫的四要素,映射文件) * configure()底層默認(rèn)去src下面查詢了hibernate.cfg.xml文件*/Configuration configuration = new Configuration().configure();// 02.創(chuàng)建sessionFactorySessionFactory sessionFactory = configuration.buildSessionFactory();// 03.打開sessionSession session = sessionFactory.openSession();// 04.開啟事務(wù)Transaction transaction = session.beginTransaction();// 05.創(chuàng)建一個(gè)Student對(duì)象Student student = new Student(400, 50, "小黃");// 06.持久化操作 session.save(student);// 07.提交事務(wù) 的 會(huì)產(chǎn)生sql語句 transaction.commit();// 08.關(guān)閉session session.close();}// 新增學(xué)生信息 @Testpublic void addStudent2() {/*** 01.讀取核心配置文件 因?yàn)槲覀冃枰男畔⒍荚谶@個(gè)核心配置文件中(連接數(shù)據(jù)庫的四要素,映射文件) * configure()底層默認(rèn)去src下面查詢了hibernate.cfg.xml文件*/Configuration configuration = new Configuration().configure();// 02.創(chuàng)建sessionFactorySessionFactory sessionFactory = configuration.buildSessionFactory();// 03.打開sessionSession session = sessionFactory.openSession();// 04.開啟事務(wù)Transaction transaction = session.beginTransaction();// 05.創(chuàng)建一個(gè)Student對(duì)象Student student1 = new Student(50, 50, "小黃2");session.save(student1);Student student2 = new Student(60, 50, "小黃2");session.save(student2);Student student3 = new Student(7, "小黃2"); // 沒有手動(dòng)的給主鍵賦值,會(huì)拋出異常 session.save(student3);/*** 07.提交事務(wù) * student1 和student2 沒有問題* 但是student3 報(bào)錯(cuò)了* 那么事務(wù)還會(huì)提交嗎? 不會(huì)! ACID一致性: 原子性: 隔離性: 永久性: * * 如果說 每個(gè)save()都會(huì)產(chǎn)生sql語句,與數(shù)據(jù)庫產(chǎn)生交互! 這樣數(shù)據(jù)庫的壓力大!* 怎么減輕?* 在commit()的時(shí)候,把之前的sql語句一起發(fā)送給數(shù)據(jù)庫執(zhí)行!*/transaction.commit();// 08.關(guān)閉session session.close();}}

hbm2ddl:屬性值

<!--是否顯示底層生成的sql語句 --><property name="show_sql">true</property><!--格式化生成的sql語句 --><property name="format_sql">true</property><!-- hbm2ddl 01.create:每次運(yùn)行都會(huì)刪除上次生成的表!02.update:沒有表會(huì)自動(dòng)創(chuàng)建,如果有,新增數(shù)據(jù)!字段不一致,會(huì)按照hbm.xml文件中的column屬性值 ,在數(shù)據(jù)庫中新增一列03.validate:不會(huì)自動(dòng)創(chuàng)建表,如果表存在,會(huì)新增數(shù)據(jù)!字段不一致,會(huì)拋出異常,說在數(shù)據(jù)庫中沒有該字段04.create-drop: 每次運(yùn)行都會(huì)刪除上次生成的表!sessionFactory關(guān)閉的時(shí)候,數(shù)據(jù)庫中的表也會(huì)刪除!--><property name="hbm2ddl.auto">update</property>

小結(jié)

hibernate: 持久層的框架! 是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架(OMR)!之前我們?cè)L問數(shù)據(jù)庫使用JDBC! 對(duì)JDBC進(jìn)行了輕量級(jí)的對(duì)象封裝!是一個(gè)全自動(dòng)ORM框架!(底層可以自動(dòng)生成sql語句)! 使用面向?qū)ο蟮乃枷雭聿僮鲾?shù)據(jù)庫!Student 實(shí)體類 Student.hbm.xml mapping(映射文件)hibernate.cfg.xml:是整個(gè)hibernate框架的核心配置文件! 01.管理mapping文件 02.整個(gè)hibernate環(huán)境的配置 03.連接數(shù)據(jù)庫的四要素sql的四種語言:DDL:數(shù)據(jù)定義語言 create alter drop truncate DML: 數(shù)據(jù)操作語言 select insert update delete DCL: 數(shù)據(jù)控制語言 grant revoke TCL: 事務(wù)控制語言 savepoint rollback<!-- hbm2ddl 01.create:每次運(yùn)行都會(huì)刪除上次生成的表!02.update:沒有表會(huì)自動(dòng)創(chuàng)建,如果有,新增數(shù)據(jù)!字段不一致,會(huì)按照hbm.xml文件中的column屬性值 ,在數(shù)據(jù)庫中新增一列03.validate:不會(huì)自動(dòng)創(chuàng)建表,如果表存在,會(huì)新增數(shù)據(jù)!字段不一致,會(huì)拋出異常,說在數(shù)據(jù)庫中沒有該字段04.create-drop:每次運(yùn)行都會(huì)刪除上次生成的表! 當(dāng)sessionFactory關(guān)閉的時(shí)候,數(shù)據(jù)庫中的表自動(dòng)刪除--><property name="hbm2ddl.auto">update</property>oracle數(shù)據(jù)庫創(chuàng)建序列 create sequence sq_student_id minvalue 1 maxvalue 9999999999 start with 10 incrment by 1 cache 20; <id name="id"><!--主鍵生成策略 01.assigned:主鍵生成的值由用戶決定,與底層數(shù)據(jù)庫沒有關(guān)系!在調(diào)用session.save()之前,必須給主鍵賦值,否則會(huì)拋出異常!02.sequence:oracle支持的主鍵生成策略!hibernate會(huì)從數(shù)據(jù)庫中取得當(dāng)前的序列下一個(gè)值賦值給主鍵!不需要我們給主鍵賦值! <generator class="sequence"><param name="sequence">sq_student_id</param></generator>03.identity :針對(duì)mysql數(shù)據(jù)庫的主鍵自增04.increment:默認(rèn)會(huì)在數(shù)據(jù)庫中查詢對(duì)應(yīng)表中主鍵的最大值,(select max(id) from stu)之后把值給主鍵!--><generator class="increment"/></id>

?

轉(zhuǎn)載于:https://www.cnblogs.com/xtdxs/p/7093477.html

總結(jié)

以上是生活随笔為你收集整理的hibernate02环境的搭建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费观看黄色网页 | 韩国精品av | 欧美亚洲自拍偷拍 | 97操碰 | 成人在线国产精品 | 中文字幕欧美专区 | 自拍偷拍国产视频 | 久久久ww | 免费观看毛片视频 | 久久国产精品波多野结衣av | 欧美性猛交| 亚洲欧美黄色片 | 国产乱淫av片杨贵妃 | 日本黄色一级视频 | 久久精品一二三 | av在线首页 | 日韩99 | 日本艳妇 | 日韩男人天堂 | 特级特黄刘亦菲aaa级 | 日韩一区二区不卡视频 | 大地资源中文在线观看免费版 | 美腿丝袜亚洲综合 | 日日干影院 | 精品视频一区二区在线 | 亚洲欧美日韩国产综合 | 人人爽人人爽人人片av | 国产丝袜第一页 | 破处视频在线观看 | 一区二区 中文字幕 | 少妇野外性xx老女人野外性xx | 先锋av资源在线 | 国产精品人人做人人爽 | 人妻互换一区二区三区四区五区 | 久久一区视频 | 风流老熟女一区二区三区 | 超级碰在线观看 | 99成人国产精品视频 | 怡红院男人天堂 | 国产精品av网站 | 久久精品国产亚洲av香蕉 | 国产美女精品久久久 | 国产精品免费av一区二区三区 | www.白虎| 无码人妻熟妇av又粗又大 | 国产在线观看免费视频今夜 | 国产91综合一区在线观看 | 在线观看的av | 亚洲第一精品在线 | 亚洲色偷精品一区二区三区 | 成人极品视频 | 亚洲不卡免费视频 | 国产精品综合久久 | 免费手机av| 黄色激情毛片 | av高清在线 | 草草在线影院 | 亚洲成人中文字幕在线 | 97公开免费视频 | 日韩毛片在线免费观看 | 久久无码人妻精品一区二区三区 | 国产大片一区二区三区 | 精品国产一 | 成人福利在线 | 国产裸体视频 | h片大全 | 瑟瑟网站免费 | 国产一级做a爱免费视频 | 成人国产精品久久久网站 | 日本黄色aaa | av一区二区三区免费观看 | 在线成人| 非洲黑人狂躁日本妞 | 亚洲精品第五页 | 婷婷俺也去 | 色666| 麻豆综合网 | 自拍视频在线播放 | 亚洲av电影一区二区 | 中文字幕第23页 | www.chengren | 国产91一区| 久热精品在线观看视频 | 精品国产不卡 | 久久精品人人爽 | 日韩无套 | 黄网站在线观看 | 乱淫av| www.五月婷| 老熟妇高潮一区二区高清视频 | 日本欧美一区二区三区不卡视频 | 无码乱人伦一区二区亚洲 | 在线观看波多野结衣 | 人妻熟女一区二区三区app下载 | 久久久久久久久久久av | 潘金莲一级淫片a.aaaaa播放 | 国产一区二区三区四区视频 | 亚洲天堂中文在线 | 日本韩国免费观看 |