已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 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明明 十多分钟 能搞定的事情用了 一个多小时...气死欧蕾.

  

肝 hibernate 配置and增删改查 and 测试的更多相关文章

  1. Hibernate下的增删改查

    概述: 关系--对象映射的中间件,属于开源ORM框架,是我们业务逻辑层中的调用数据库的中间件 演变: jdbc---hibernater---mybatis hibernate和mybatis区别? ...

  2. Hibernate入门_增删改查

    一.Hibernate入门案例剖析:  ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private ...

  3. hibernate搭建及其增删改查

    一.jar包 最基础的hibernatejar包,以及数据库驱动的jar包 二.数据库 t_user表 id int 主键 自动增长 name varchar() 三.配置文件 <?xml ve ...

  4. GreenDao数据库框架的配置与增删改查

    并非原创,原创地址http://blog.csdn.net/njweiyukun/article/details/51893092 配置-------------------------------- ...

  5. nodejs笔记五--MongoDB基本环境配置及增删改查;

    一.基本环境配置: 1,首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,然后一步一步next安装,当然可以自己更改安装目录:安装完成之后,配置环境变量 ...

  6. python的Web框架,Django的ORM,模型基础,MySQL连接配置及增删改查

    Django中的ORM简介 ORM概念:对象关系映射(Object Relational Mapping,简称ORM): 用面向对象的方式描述数据库,去操作数据库,甚至可以达到不用编写SQL语句就能够 ...

  7. struts+hibernate 请求数据库增删改查(小项目实例)

      StudentAction.java package com.action; import java.util.ArrayList; import java.util.List; import j ...

  8. 5.Hibernate实现全套增删改查和ajax异步分页

    1.1 创建如下oracle数据库脚本 drop sequence seq_stu; create sequence SEQ_STU minvalue maxvalue start increment ...

  9. Springboot+hibernate简单的增删改查

    1.创建好项目之后在配置端口号(也可以不用配置,默认端口8080) #server server.port= server.tomcat.uri-encoding=utf- 2.配置mysql #My ...

随机推荐

  1. w3school上系统过了一遍Jquery的总结

    下面是今天学习JQUERY中发现的一些小钻石 1:$(document).ready(function(){}); 为了防止文档在完全加载(就绪)之前运行 jQuery 代码(终于搞清了这句代码的含义 ...

  2. SqlServer中的事务隔离级别、锁机制

    事务 作用:用来执行一连串的动作,并且保证所有动作要么都执行.要么都不执行. 属性:原子行.一致性.隔离性.持久性 锁 作用:SqlServer使用锁来实施事务隔离属性. 阻塞 定义:如果一个事务持有 ...

  3. Jedis连接池对Redis数据操作

    [效果图] [前言] Redis是常用于缓存的非关系型数据库,感觉更像加强型的HashMap的用法,依靠Key和Value保存数据.官方推荐用Jedis来操作Redis数据库,使用和JDBC差不多,一 ...

  4. Python练习题-1.使用匿名函数对1~1000求和,代码力求简洁。

    Python 练习 标签(空格分隔): Python Python练习题 Python知识点 一.使用匿名函数对1~1000求和,代码力求简洁. 答案: In [1]: from functools ...

  5. Heap

    #include using namespace std; int heap[100010],cnt=0; void put(int x) { cnt++; heap[cnt]=x; int now= ...

  6. JDK AtomicInteger 源码分析

    @(JDK)[AtomicInteger] JDK AtomicInteger 源码分析 Unsafe 实例化 Unsafe在创建实例的时候,不能仅仅通过new Unsafe()或者Unsafe.ge ...

  7. threesum

    算法题 问题描述:在一些给定的数中,找到三个数,他们相加的和是0,并且这三个数的组合是不能重复的 例子: input [-1, 0, -1, 2, 1] Output [[-1, 1 ,0], [-1 ...

  8. window.open打开新窗体并用post方式传参

    function openPostWindow(url,data,name){ //url要跳转到的页面,data要传递的数据,name显示方式(可能任意命名) var tempForm = docu ...

  9. Scrapy爬虫框架补充内容一(Linux环境)

    Scrapy爬虫框架结构及工作原理详解 scrapy框架的框架结构如下: 组件分析: ENGINE:(核心):处理整个框架的数据流,各个组件在其控制下协同工作 SCHEDULER(调度器):负责接收引 ...

  10. Python3 urllib.request库的基本使用

    Python3 urllib.request库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 在Python中有很多库可以用来抓取网页,我们先学习urlli ...