




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Hibernate預(yù)備實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:使用Java序列化實(shí)現(xiàn)持久化使用JDBC編程訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)Hibernate的一個(gè)簡(jiǎn)單例子實(shí)驗(yàn)?zāi)康模?. Java序列化2. JDBC編程3. Hibernate配置文件4. 映射文件編寫(xiě)5. 掌握Hibernate應(yīng)用的基本步驟本實(shí)驗(yàn)主要談?wù)凥ibernate使用的一個(gè)簡(jiǎn)單例子,就是向數(shù)據(jù)庫(kù)表中添加用戶(hù)名和密碼。新建一個(gè)Java項(xiàng)目名為sy5,本次實(shí)驗(yàn)只創(chuàng)建這樣一個(gè)項(xiàng)目就足夠了。一、 Java序列化將Java對(duì)象序列化輸出到磁盤(pán)文件,再?gòu)拇疟P(pán)文件中讀取出來(lái)恢復(fù)為Java對(duì)象,實(shí)現(xiàn)持久化存儲(chǔ)。1.創(chuàng)建實(shí)體類(lèi):package cs.cwnu.seri;import
2、 java.io.Serializable;public class Employee implements Serializable private String name;private int salary;public Employee() super();public Employee(String name, int money) = name;this.salary = money;/省略setter和getter/第二個(gè)實(shí)體類(lèi)package cs.cwnu.seri;public class Manager extends Employee private
3、String name;private int salary;public Manager(String name, int money) = name;this.salary = money;public void setSecretary(Employee emp) /省略setter和getter2.編寫(xiě)測(cè)試類(lèi)package cs.cwnu.seri;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io
4、.ObjectOutputStream;public class Test public static void main(String args) Employee emplyee = new Employee(zhangsan, 3000);Manager manager1 = new Manager(wangwu, 5000);manager1.setSecretary(emplyee);Employee staff = new Employee2;staff0 = emplyee;staff1 = manager1;try / /先寫(xiě)入流 保存到磁盤(pán)文件/ObjectOutputStr
5、eam out = new ObjectOutputStream(new FileOutputStream(employee.dat);/ employee.dat不存在將自動(dòng)創(chuàng)建,放在項(xiàng)目sy5文件夾下,.dat后綴名是任取的out.writeObject(staff);/ /寫(xiě)出流out.close();/ /再?gòu)拇疟P(pán)文件讀入內(nèi)存程序中/ObjectInputStream in = new ObjectInputStream(new FileInputStream(employee.dat);Employee newStaff = (Employee) in.readObject();/
6、/readObject()in.close();/for (int i = 0; i newStaff.length; i+)System.out.println(newStaffi.getName() + =+ newStaffi.getSalary();/ 打印輸出看是否恢復(fù)成功 catch (Exception e) e.printStackTrace();二、JDBC編程1.創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)表格登錄數(shù)據(jù)庫(kù)點(diǎn)擊輸入數(shù)據(jù)庫(kù)密碼,數(shù)據(jù)庫(kù)密碼安裝時(shí)已設(shè)定,請(qǐng)?jiān)趯?shí)驗(yàn)室電腦桌面上查找。創(chuàng)建數(shù)據(jù)庫(kù)“create database acc”使用show databases;查看創(chuàng)建的數(shù)據(jù)庫(kù),MySq
7、l使用分號(hào)標(biāo)志命令行結(jié)束選擇數(shù)據(jù)庫(kù)“use acc”創(chuàng)建數(shù)據(jù)庫(kù)表create table user(id int(3) unsigned NOT NULL auto_increment,username varchar(20),password varchar(20),primary key(id);使用describe user;可以查看創(chuàng)建的表結(jié)構(gòu),不熟悉的MySql命令查詢(xún)用戶(hù)手冊(cè)。使用select * from user;可以查看user表中的記錄,目前為空,一條都沒(méi)有2.使用JDBC編碼訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),出入、讀取數(shù)據(jù)準(zhǔn)備:將數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序mysql-connector-java-5.1.
8、18-bin.jar復(fù)制到sy5項(xiàng)目文件夾下,并添加到Build Path(選中項(xiàng)目右擊),程序運(yùn)行時(shí)就找得到驅(qū)動(dòng)包中的類(lèi)。點(diǎn)擊進(jìn)入對(duì)話(huà)框點(diǎn)擊打開(kāi):package cs.cwnu.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class TestSQL public stati
9、c void main(String args) Connection con;PreparedStatement ps;Statement st;ResultSet rs;int i=0;/加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)tryClass.forName(com.mysql.jdbc.Driver);catch (Exception e) System.out.println(加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)失?。?;e.printStackTrace();/獲取數(shù)據(jù)庫(kù)連接try con= DriverManager.getConnection(jdbc:mysql:/localhost:3306/acc, root, 123
10、4);ps=con.prepareStatement(insert into user (id,username,password) values (?,?,?);ps.setInt(1,i);i+;ps.setString(2, 張飛);ps.setString(3,911);ps.execute();st=con.createStatement();rs=st.executeQuery(select * from user);while (rs.next()System.out.println(rs.getInt(id)+ : +rs.getString(username)+ : +rs.
11、getString(password);try if(con!=null)con.close(); catch (Exception e2) System.out.println(連接關(guān)閉失??!);try if(ps!=null)ps.close(); catch (Exception e2) System.out.println(連接關(guān)閉失??!);try if(rs!=null)rs.close(); catch (Exception e2) System.out.println(連接關(guān)閉失??!);try if(st!=null)st.close(); catch (Exception e2
12、) System.out.println(連接關(guān)閉失?。?;catch (SQLException e) System.out.println(獲取數(shù)據(jù)庫(kù)連接失敗!); catch (Exception e) e.printStackTrace();3.測(cè)試運(yùn)行一次就在數(shù)據(jù)庫(kù)中插入一個(gè)張飛,可以用select * from user;查看插入情況。二、 使用Hibernate訪(fǎng)問(wèn)user表1.給項(xiàng)目添加Hibernate包添加過(guò)程需要設(shè)置Hibernate.cfg.xml配置文件,選中項(xiàng)目請(qǐng)選擇3.3的版本前面兩步直接點(diǎn)擊next,無(wú)需改變?cè)O(shè)置配置Hibernate.cfg.xml,作用就是為
13、框架提供連接數(shù)據(jù)庫(kù)的信息如下圖填寫(xiě),點(diǎn)擊finish即可注意:jdbc:mysql:/localhost:3306/acc各使用acc指的是數(shù)據(jù)庫(kù)名,前面是主機(jī)名端口號(hào),在前面默認(rèn)就是jdbc:mysql:/密碼根據(jù)機(jī)器安裝數(shù)據(jù)庫(kù)設(shè)置的密碼填寫(xiě)添加成功后目錄結(jié)構(gòu),上面紅色圈內(nèi)為 Hibernate配置文件,下面為添加的包配置文件內(nèi)容為:!DOCTYPE hibernate-configuration PUBLIC -/Hibernate/Hibernate Configuration DTD 3.0/EN org.hibernate.dialect.MySQLDialect jdbc:mysq
14、l:/localhost:3306/acc root 1234 com.mysql.jdbc.Driver 2.創(chuàng)建實(shí)體類(lèi)User.javapackage cs.cwnu.pojo;/* * User entity. author MyEclipse Persistence Tools */public class User implements java.io.Serializable / Fieldsprivate Integer id;private String username;private String password;/ Constructors/* default cons
15、tructor */public User() /* full constructor */public User(String username, String password) this.username = username;this.password = password;/省略setter和getter3.創(chuàng)建Hibernate映射文件User.hbm.xml,與User類(lèi)在同一目錄內(nèi)容是:!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN 請(qǐng)?jiān)趆ibernate.cfg.xml添加映
16、射文件 添加在之前4.使用框架向數(shù)據(jù)庫(kù)添加兩條數(shù)據(jù)package cs.cwnu.demo;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import cs.cwnu.pojo.User;public class Test public static void main(String args) /*AnnotationConfiguration*/User m= ne
17、w User(關(guān)羽,123);User n= new User(劉備,456);/解析配置文件Configuration cfg=new Configuration();cfg.configure();/自動(dòng)加載Hibernate.cfg.xml/cfg.setProperty(Environment.SHOW_SQL, true);/創(chuàng)建SessionFactorySessionFactory sf=cfg.buildSessionFactory();/打開(kāi)sessionSession session = sf.openSession();/開(kāi)啟事務(wù)(查詢(xún)操作不需要)Transaction tx=sess
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)膠合板行業(yè)十三五規(guī)劃及發(fā)展盈利分析報(bào)告
- 2025-2030年中國(guó)精密壓鑄機(jī)加工行業(yè)運(yùn)營(yíng)狀況與發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)立磨市場(chǎng)運(yùn)行態(tài)勢(shì)及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)監(jiān)控?cái)z像機(jī)行業(yè)運(yùn)行狀況及投資戰(zhàn)略研究報(bào)告
- 2025年期貨交易委托協(xié)議范本
- 農(nóng)戶(hù)土地租賃合同范本
- 2025年個(gè)體二手汽車(chē)買(mǎi)賣(mài)合同
- 創(chuàng)意手工店租賃合同樣本
- 二年級(jí)下冊(cè)數(shù)學(xué)教案-8.1評(píng)選吉祥物∣北師大版
- 六年級(jí)上冊(cè)數(shù)學(xué)教案-數(shù)學(xué)好玩 3 比賽場(chǎng)次|北師大版
- 網(wǎng)絡(luò)試運(yùn)行方案
- 高考英語(yǔ)語(yǔ)法考點(diǎn)梳理
- 《護(hù)患溝通》課件
- 2024-2025學(xué)年新教材高中化學(xué) 第三章 鐵 金屬材料 2.1 合金說(shuō)課稿 新人教版必修1
- 《籃球防守腳步移動(dòng)技術(shù) 滑步》教案
- 完整版項(xiàng)目部組織機(jī)構(gòu)圖
- 浙江省杭州市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 人工智能客服機(jī)器人使用手冊(cè)
- 品牌全球化體育營(yíng)銷(xiāo)趨勢(shì)洞察報(bào)告 2024
- (新版)拖拉機(jī)駕駛證科目一知識(shí)考試題庫(kù)500題(含答案)
- (人衛(wèi)版第九版?zhèn)魅静W(xué)總論(一))課件
評(píng)論
0/150
提交評(píng)論