標籤:set factor 文章 doctype integer XML void 開始 his
已經通宵三天擼代碼了,現在的我已經養成晚上修仙寫代碼的節奏了.....最近 剛剛複習到了 hibernate 談談 這篇文章就談談我對這貨的理解吧.
在看這篇文章之前希望你 知道sessionfactory 和session 還有 transaction(事物) 誒嘿不造的可以去看看http://blog.csdn.net/u012377333/article/details/48086193
OK正題開始 步驟 我們需要一個可以持久化的bean類 還有它的附屬映射 hbm.xml檔案 以及dao(重要) and 測試類別
首先開始是bean類代碼如下:
package qy.java.bean;public class Userbean { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "Userbean{" + "id=" + id + ", username=‘" + username + ‘\‘‘ + ", password=‘" + password + ‘\‘‘ + ‘}‘; }}
其次是他的對應檔
<?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"><hibernate-mapping package="qy.java.bean"> <class name="Userbean" table="x_user"> <id name="id" type="int" column="id"> <generator class="native"/> </id> <property name="username" type="string" column="username" length="20"/> <property name="password" type="string" column="password" length="20"/> </class></hibernate-mapping>
這裡要說一個 在主設定檔裡面我沒有配置自動建表的那貨= = 所以我是直接手動 建表 有興趣的同學可以自己去配置
然後是dao類 裡麵包括增刪改查 已經苟 對象id算是買4送一吧,哦對了 我這種初始方法是比較老的一種方法 新的初始化方法在下面
package qy.java.dao;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.query.Query;import qy.java.bean.Userbean;import java.util.List;public class Userdao { private static SessionFactory sf; static { Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); sf = cfg.buildSessionFactory();// 獲得會話工廠 } // 增加 public void add(Userbean user) { // 讀設定檔,會 Session s = sf.openSession(); Transaction t = null; try { t = s.beginTransaction(); s.save(user); //持久化 對象 t.commit(); //提交 } catch (Exception e) { t.rollback(); //復原 throw new RuntimeException(e); } finally { s.close(); } } // 更新 public void update(Userbean user) { // 讀設定檔,會 Session s = sf.openSession(); Transaction t = null; try { t = s.beginTransaction(); s.update(user); // s.update("username", user); t.commit(); } catch (Exception e) { t.rollback(); throw new RuntimeException(e); } finally { s.close(); } } //刪除 public void delete(int id) { // 讀設定檔,會 Session s = sf.openSession(); Transaction t = null; try { t = s.beginTransaction(); // User user = (User) s.get(User.class, id); Userbean user = new Userbean(); user.setId(id); s.delete(user); t.commit(); } catch (Exception e) { t.rollback(); throw new RuntimeException(e); } finally { s.close(); } } //查詢所有 public List<Userbean> findALL() { // 讀設定檔,會 Session s = sf.openSession(); List<Userbean> list = null; try { list = s.createQuery("FROM Userbean").list(); /*Criteria c = s.createCriteria(User.class); list = c.list();*/ } catch (Exception e) { throw e; } finally { s.close(); } return list; } //返回 id = = public long findUserCount() { //int double ,integer Double char Charset Session s = sf.openSession(); Long count = null; try { count = (Long) s.createQuery("SELECT COUNT(*) FROM Userbean ")// .uniqueResult(); } catch (Exception e) { throw e; } finally { s.close(); } return count; }}
這個是新的初始化方法
package qy.java.dao;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import qy.java.bean.Userbean;public class Foxdao { private static SessionFactory sf; static { try { Configuration configuration = new Configuration(); configuration.configure(); sf = configuration.buildSessionFactory(); } catch (Throwable ex) { throw new ExceptionInInitializerError(ex); } } // 增加 public void add(Userbean user) { // 讀設定檔,會 Session s = sf.openSession(); Transaction t = null; try { t = s.beginTransaction(); s.save(user); //持久化 對象 t.commit(); //提交 } catch (Exception e) { t.rollback(); //復原 throw new RuntimeException(e); } finally { s.close(); } }}
然後了是測試 方法= = 仁慈的我還給發測試.....
package test.qy.java.dao; import org.junit.Test; import org.junit.Before; import org.junit.After;import qy.java.bean.Userbean;import qy.java.dao.Userdao;import java.util.Iterator;import java.util.List;/** * Userdao Tester. * * @author <Authors name> * @since <pre>???? 20, 2017</pre> * @version 1.0 */ public class UserdaoTest { @Beforepublic void before() throws Exception { } @Afterpublic void after() throws Exception { } /** * * Method: add(Userbean user) * */ @Testpublic void testAdd() throws Exception { Userbean user = new Userbean(); user.setPassword("wqerwqer"); user.setUsername("zhangsan"); new Userdao().add(user);} @Testpublic void updel(){ Userbean userbean = new Userbean(); userbean.setId(1); userbean.setUsername("滑稽"); userbean.setPassword("10086"); new Userdao().update(userbean);}@Testpublic void delet(){ new Userdao().delete(2);}@Test public void file(){ List<Userbean> list =new Userdao().findALL(); Iterator<Userbean> it = list.iterator(); Userbean user = null; while (it.hasNext()){ user = it.next(); System.out.println(user.getUsername()); } }@Test public void testFindAllUserCount(){ long count =new Userdao().findUserCount(); System.out.println(count);}}
增刪改查雖然簡單 但是這些都是基礎 就像 功夫裡面的蹲馬步 跑步一樣 靈活運用 才能發揮他們真正的實力 相互之間的配合 結合自己的所需才能 實現作用 最大化..
emmm寫完了 剛開始搭建環境的時候出現 hibernate的不相容我這個 jdk1.7原因是hibernate的版本太高了 = =然後我又懶 所以我就去下了一個1.8明明 十多分鐘 能搞定的事情用了 一個多小時...氣死歐蕾.
肝 hibernate 配置and增刪改查 and 測試