Hibernate預(yù)備實(shí)驗(yàn)_第1頁
Hibernate預(yù)備實(shí)驗(yàn)_第2頁
Hibernate預(yù)備實(shí)驗(yàn)_第3頁
Hibernate預(yù)備實(shí)驗(yàn)_第4頁
Hibernate預(yù)備實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Hibernate預(yù)備實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容:使用Java序列化實(shí)現(xiàn)持久化使用JDBC編程訪問數(shù)據(jù)庫Hibernate的一個(gè)簡單例子實(shí)驗(yàn)?zāi)康模?. Java序列化2. JDBC編程3. Hibernate配置文件4. 映射文件編寫5. 掌握Hibernate應(yīng)用的基本步驟本實(shí)驗(yàn)主要談?wù)凥ibernate使用的一個(gè)簡單例子,就是向數(shù)據(jù)庫表中添加用戶名和密碼。新建一個(gè)Java項(xiàng)目名為sy5,本次實(shí)驗(yàn)只創(chuàng)建這樣一個(gè)項(xiàng)目就足夠了。一、 Java序列化將Java對象序列化輸出到磁盤文件,再從磁盤文件中讀取出來恢復(fù)為Java對象,實(shí)現(xiàn)持久化存儲。1.創(chuàng)建實(shí)體類: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í)體類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.編寫測試類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 / /先寫入流 保存到磁盤文件/ObjectOutputStr

5、eam out = new ObjectOutputStream(new FileOutputStream(employee.dat);/ employee.dat不存在將自動創(chuàng)建,放在項(xiàng)目sy5文件夾下,.dat后綴名是任取的out.writeObject(staff);/ /寫出流out.close();/ /再從磁盤文件讀入內(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ù)庫和數(shù)據(jù)庫表格登錄數(shù)據(jù)庫點(diǎn)擊輸入數(shù)據(jù)庫密碼,數(shù)據(jù)庫密碼安裝時(shí)已設(shè)定,請?jiān)趯?shí)驗(yàn)室電腦桌面上查找。創(chuàng)建數(shù)據(jù)庫“create database acc”使用show databases;查看創(chuàng)建的數(shù)據(jù)庫,MySq

7、l使用分號標(biāo)志命令行結(jié)束選擇數(shù)據(jù)庫“use acc”創(chuàng)建數(shù)據(jù)庫表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命令查詢用戶手冊。使用select * from user;可以查看user表中的記錄,目前為空,一條都沒有2.使用JDBC編碼訪問數(shù)據(jù)庫,出入、讀取數(shù)據(jù)準(zhǔn)備:將數(shù)據(jù)庫驅(qū)動程序mysql-connector-java-5.1.

8、18-bin.jar復(fù)制到sy5項(xiàng)目文件夾下,并添加到Build Path(選中項(xiàng)目右擊),程序運(yùn)行時(shí)就找得到驅(qū)動包中的類。點(diǎn)擊進(jìn)入對話框點(diǎn)擊打開: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ù)庫驅(qū)動tryClass.forName(com.mysql.jdbc.Driver);catch (Exception e) System.out.println(加載數(shù)據(jù)庫驅(qū)動失??!);e.printStackTrace();/獲取數(shù)據(jù)庫連接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ù)庫連接失敗!); catch (Exception e) e.printStackTrace();3.測試運(yùn)行一次就在數(shù)據(jù)庫中插入一個(gè)張飛,可以用select * from user;查看插入情況。二、 使用Hibernate訪問user表1.給項(xiàng)目添加Hibernate包添加過程需要設(shè)置Hibernate.cfg.xml配置文件,選中項(xiàng)目請選擇3.3的版本前面兩步直接點(diǎn)擊next,無需改變設(shè)置配置Hibernate.cfg.xml,作用就是為

13、框架提供連接數(shù)據(jù)庫的信息如下圖填寫,點(diǎn)擊finish即可注意:jdbc:mysql:/localhost:3306/acc各使用acc指的是數(shù)據(jù)庫名,前面是主機(jī)名端口號,在前面默認(rèn)就是jdbc:mysql:/密碼根據(jù)機(jī)器安裝數(shù)據(jù)庫設(shè)置的密碼填寫添加成功后目錄結(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í)體類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類在同一目錄內(nèi)容是:!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN 請?jiān)趆ibernate.cfg.xml添加映

16、射文件 添加在之前4.使用框架向數(shù)據(jù)庫添加兩條數(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();/自動加載Hibernate.cfg.xml/cfg.setProperty(Environment.SHOW_SQL, true);/創(chuàng)建SessionFactorySessionFactory sf=cfg.buildSessionFactory();/打開sessionSession session = sf.openSession();/開啟事務(wù)(查詢操作不需要)Transaction tx=sess

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論