肝 hibernate 配置and增删改查 and 测试
已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 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 测试的更多相关文章
- Hibernate下的增删改查
概述: 关系--对象映射的中间件,属于开源ORM框架,是我们业务逻辑层中的调用数据库的中间件 演变: jdbc---hibernater---mybatis hibernate和mybatis区别? ...
- Hibernate入门_增删改查
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private ...
- hibernate搭建及其增删改查
一.jar包 最基础的hibernatejar包,以及数据库驱动的jar包 二.数据库 t_user表 id int 主键 自动增长 name varchar() 三.配置文件 <?xml ve ...
- GreenDao数据库框架的配置与增删改查
并非原创,原创地址http://blog.csdn.net/njweiyukun/article/details/51893092 配置-------------------------------- ...
- nodejs笔记五--MongoDB基本环境配置及增删改查;
一.基本环境配置: 1,首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,然后一步一步next安装,当然可以自己更改安装目录:安装完成之后,配置环境变量 ...
- python的Web框架,Django的ORM,模型基础,MySQL连接配置及增删改查
Django中的ORM简介 ORM概念:对象关系映射(Object Relational Mapping,简称ORM): 用面向对象的方式描述数据库,去操作数据库,甚至可以达到不用编写SQL语句就能够 ...
- struts+hibernate 请求数据库增删改查(小项目实例)
StudentAction.java package com.action; import java.util.ArrayList; import java.util.List; import j ...
- 5.Hibernate实现全套增删改查和ajax异步分页
1.1 创建如下oracle数据库脚本 drop sequence seq_stu; create sequence SEQ_STU minvalue maxvalue start increment ...
- Springboot+hibernate简单的增删改查
1.创建好项目之后在配置端口号(也可以不用配置,默认端口8080) #server server.port= server.tomcat.uri-encoding=utf- 2.配置mysql #My ...
随机推荐
- JAVA学习总结-面向对象
前言:java面向对象中的知识可以说是整个java基础最核心的部分,不知不觉已经学完快2个月了,是时候复习一波了,刚开始学习的时候被绕的很懵逼,这次总结完毕之后有了很多新的感悟,这就是所谓的每有会意, ...
- 面向对象,更适合JavaScript
面向对象程序设计是软件开发中一个很庞大很复杂的话题,它并不是仅仅学会类.继承.封装.多态这些面向对象编程语法元素就表示掌握的,这些语法元素只是实现面向对象程序的工具, 就像砖块.水泥能搭建小屋,也能造 ...
- php添加日志文件
记录一下. 有时候写测试代码的时候,不习惯直接在屏幕上输出反馈,那么可以配置日志文件,把需要输出的内容追加到日志文件里面,就很方便. Php自带日志系统,可以参考网上的博客配置. 我要说的是,如果你的 ...
- 搭建centos7的开发环境2-单机版Hadoop2.7.3配置
最近公司准备升级spark环境,主要原因是生产环境的spark和hadoop版本都比较低,但是具体升级到何种版本还不确定,需要做进一步的测试分析.这个任务对于大数据开发环境配置有要求,这里记录一下配置 ...
- docker学习笔记(一)—— ubuntu16.04下安装docker
docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...
- Socket 异步通信
最近在写数据通信的时候用到的东西!希望对大家有帮助 /// <summary> /// 获取或设置服务器IP地址 /// </summary> public string se ...
- flume原理
1. flume简介 flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original generat ...
- 深入理解SpringBoot之自动装配
SpringBoot的自动装配是拆箱即用的基础,也是微服务化的前提.其实它并不那么神秘,我在这之前已经写过最基本的实现了,大家可以参考这篇文章.这次主要的议题是,来看看它是怎么样实现的,我们透过源代码 ...
- POJ 2411 解题报告
传送门:http://poj.org/problem?id=2411 题目简述 有一个\(W\)行\(H\)列的广场,需要用\(1*2\)小砖铺满,小砖之间互相不能重叠,问 有多少种不同的铺法? 输入 ...
- 关于HTML、CSS、JavaScript三者关系的简述
总述 我对于网页这部分的理解吧,对于静态网页来说,无非分为三部分:第一部分.HTML,第二部分.CSS,第三部分.JavaScript(这部分暂且放一边).这俩个给我的第一印象就是,这你妹的都是一串串 ...