已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 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类 里面包括增删改查 还有一个记录数是买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; } // 查询总记录数 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 { @Before public void before() throws Exception { } @After public void after() throws Exception { } /** * * Method: add(Userbean user) * */ @Test public void testAdd() throws Exception { Userbean user = new Userbean(); user.setPassword("wqerwqer"); user.setUsername("zhangsan"); new Userdao().add(user); } @Test public void updel(){ Userbean userbean = new Userbean(); userbean.setId(1); userbean.setUsername("滑稽"); userbean.setPassword("10086"); new Userdao().update(userbean); } @Test public 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明明 十多分钟 能搞定的事情用了 一个多小时...气死欧蕾.