已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 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. javax.mail

    摘抄 example: public static void sendEmail(ConfBean cBean, String filename, String filepath) { try { P ...

  2. P2453 [SDOI2006]最短距离

    题目描述 一种EDIT字母编辑器,它的功能是可以通过不同的变换操作可以把一个源串X [l..m]变换为新的目标串y[1..n].EDIT提供的变换操作有: 源串中的单个字符可被删除(delete): ...

  3. Xshell 5 配置上传下载命令

    可以在官网https://www.netsarang.com/products/main.html 下载Xshell, 目前最新的版本已经到Xshell 6了 本人记录下安装的目录截图: 安装命令:  ...

  4. 简单剖析Node中的事件监听机制(一)

    使用js的class类简单的实现一个事件监听机制,不同于浏览器中的时间绑定与监听,类似于node中的时间监听,并且会在接下来的文章中去根据自己的理解去写一下Event模块中的原理. Node.js使用 ...

  5. Pescal Triangle Two

    Description: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3 ...

  6. jvm GC

    JavaGC.新生代.老年代 Java 中的堆是 JVM所管理的最大的一块内存空间,主要用于存放各种类的实例对象. 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( ...

  7. File,FileInfo,FileStream,StreamReader的区别与用法

    概括的说,File,FileInfo,FileStream是用于文件 I/O 的类,StreamReader是用于从流读取和写入流的类,使用之前都需using System.IO. 先定义一个TXT文 ...

  8. Netty中如何写大型数据

    因为网络饱和的可能性,如何在异步框架中高效地写大块的数据是一个特殊的问题.由于写操作是非阻塞的,所以即使没有写出所有的数据,写操作也会在完成时返回并通知ChannelFuture.当这种情况发生时,如 ...

  9. linux 下 Emacs dired 模式 隐藏 dot file ".filename" 文件

    有时候 emacs 下调用 C-x dired 是挺方便的一个事,但是一堆的点文件(linux下以"."为前缀的文件,即隐藏文件)让人目不暇接,打算隐藏之. 参考如下: 最主要的是 ...

  10. postman的安装与使用(模拟请求)

    最近需要测试产品中的REST API,无意中发现了PostMan这个chrome插件,把玩了一下,发现postman秉承了一贯以来google工具强大,易用的特质.独乐乐不如众乐乐,特此共享出来给大伙 ...