肝 hibernate 配置and增删改查 and 测试

时间:2023-03-08 21:58:12

  已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 hibernate 谈谈 这篇文章就谈谈我对这货的理解吧.

在看这篇文章之前希望你 知道sessionfactory 和session 还有 transaction(事物) 诶嘿不造的可以去看看http://blog.****.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明明 十多分钟 能搞定的事情用了 一个多小时...气死欧蕾.