hibernate基础增删查改简单实例
hibernate 基础理论知识网上很多,可以百度和google.这里不做多的介绍,以一个User表来开展例子
建一个web-project
我这里用了junit单元测试环境来进行增删查改的测试,别的不多说,导包就行
本次用到的所有jar包下载地址:
链接:http://pan.baidu.com/s/1skHrg0t 密码:dbe2
1、hibernate配置文件(hibernate.cfg.xml):主要是数据库连接核心的配置项
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory>
<!--数据库URL -->
<property name="connection.url">
jdbc:oracle:thin:@127.0.0.1:1521:orcl
</property>
<!--数据库用户 -->
<property name="connection.username">rent</property>
<!--数据库用户密码 -->
<property name="connection.password">rent</property>
<!--数据库JDBC驱动 -->
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<!--每个数据库都有其对应的Dialect以匹配其平台特性 -->
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<!--是否将运行期生成的SQL输出到日志以供调试 -->
<property name="show_sql">true</property>
<!--是否格式化SQL -->
<property name="format_sql">true</property> <mapping resource="com/cn/entity/User.hbm.xml" /> </session-factory> </hibernate-configuration>
2、映射文件(User.hbm.xml),主要是对象一表的映射
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<class name="com.cn.entity.User" table="users" >
<id name="id" column="id" type="java.lang.Integer">
<!-- 主键的生成策略 -->
<generator class="assigned"/>
</id>
<property name="name" type="java.lang.String" column="name"/>
<property name="password" type="java.lang.String" column="password"/>
<property name="telephone" type="java.lang.String" column="telephone"/>
<property name="username" type="java.lang.String" column="username"/>
<property name="isadmin" type="java.lang.String" column="isadmin"/> </class>
</hibernate-mapping>
<!--
class ==== 表
对象 =====一行数据
属性 ===== 列
属性的类型 ==== 列的类型 -->
3、我的数据库表结构。这里表结构与实体类中属性的名称和类型要保持一致

4、实体类(User.java)
package com.cn.entity;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String name;
private String password;
private String telephone;
private String username;
private String isadmin;
public User(Integer id, String name, String password, String telephone,
String username, String isadmin) {
super();
this.id = id;
this.name = name;
this.password = password;
this.telephone = telephone;
this.username = username;
this.isadmin = isadmin;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getIsadmin() {
return isadmin;
}
public void setIsadmin(String isadmin) {
this.isadmin = isadmin;
}
}
重要的事再说一遍:为避免以后可能遇到的问题和麻烦,强烈要求实体类属性和类型与数据库表中字段名称和类型保持一致。实体类中的类型用包装类的类型
5、建junit测试环境:新建junit文件

帖代码:
package com.cn.test; import static org.junit.Assert.*; import java.io.Serializable; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test; import com.cn.entity.User; public class TestHibernate { @Test
public void add() {
// 读取配置文件
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
// 得到当前连接数据库的session
Session session = factory.openSession();
// 开启事务
Transaction tx = session.beginTransaction();
try {
User user = new User(15, "liujuan1", "123456", "13610249898",
"admin", "yes");
Serializable id = session.save(user); if (id != null) {
System.out.println("新增成功!");
tx.commit();// 提交事务
} else {
tx.rollback();// 失败回滚
} } catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
} @Test
public void select() {
// 读取配置文件
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
// 得到当前连接数据库的session
Session session = factory.openSession();
// 开启事务
Transaction tx = session.beginTransaction();
try {
// 查询get
User user = (User) session.get(User.class, 15);
System.out.println("查询结果:" + user.getName());
tx.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
} @Test
public void update() {
// 读取配置文件
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
// 得到当前连接数据库的session
Session session = factory.openSession();
// 开启事务
Transaction tx = session.beginTransaction();
try {
// 第1种:update持久化修改:先查询,与数据库有关联
/* User user = (User) session.get(User.class, 15);
user.setName("duheyu");
user.setPassword("duheyu");
session.update(user);
tx.commit();*/ //第2种:瞬时状态下修改,会set全部字段,不修改的字段全部清空了
/*User user =new User();
user.setId(15);
user.setName("duxinke");
user.setPassword("duxinke");
session.update(user);
tx.commit();*/ //第3种,新增或修改,拿瞬时状态来测试
User user =new User();
user.setId(15);
user.setName("duxinke");
user.setPassword("duxinke");
session.saveOrUpdate(user);
tx.commit(); } catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
} @Test
public void delete(){
//读取并解析配置文件hibernate.cfg.xml
Configuration config=new Configuration().configure();
//读取并解析映射信息,User.hbm.xml,创建SessionFactory
SessionFactory factory = config.buildSessionFactory();
//打开一个连接数据库的Session
Session session = factory.openSession();
//开始一个事务,增删除查改操作必须有,查询操作可选
Transaction tx =session.beginTransaction();
//执行操作,都是用当前Session执行
try {
User user =new User();
user.setId(15);
session.delete(user);
tx.commit();
} catch (Exception e) {
// TODO: handle exception
}
} }
本次是以帖代码为主,不讲原理,如果你懂一点,看的话,会非常容易上手做项目。我做东西就是的,原理似懂非懂,上网搜代码,下来改改,就能用了。还好我的环境对代码质量和性能要求不是太严格。一切以工具能运行即可。
hibernate基础增删查改简单实例的更多相关文章
- Django笔记&教程 5-1 基础增删查改
Django 自学笔记兼学习教程第5章第1节--基础增删查改 点击查看教程总目录 第四章介绍了模型类models.Model和创建模型,相当于介绍了数据库表和如何创建数据库表. 这一章将介绍如何使用模 ...
- Dapper基础增删查改、事务和存储过程
1.前言 Dapper是一个轻量级的orm框架,上手也非常的简单,它可以实体映射,所以先准备实体如下: public class Couser { public int id { get; set; ...
- [Hibernate] 基本增删查改
本文记录,Java 应用通过 Hibernate 对数据库 MySQL 进行基本的增删改查操作,即CRUD. 本例子的目录结构如下 hibernate.cfg.xml 存储数据库信息,如数据库类型,账 ...
- mysql入门基础增删查改
数据查询语法(DQL) DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 语法: SELECT selection_list /*要查询的列名称*/ F ...
- Yii框架基础增删查改
返回一条数据 Country::find()->one(); 返回所有数据 Country::find()->all(); 返回记录的数量 $country =Country::find( ...
- backbonejs mvc框架的增删查改实例
一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https://github.com/nonocast/e ...
- Java连接MySQL数据库及简单的增删查改操作
主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...
- java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)
1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件 准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...
- nodejs连接mysql并进行简单的增删查改
最近在入门nodejs,正好学习到了如何使用nodejs进行数据库的连接,觉得比较重要,便写一下随笔,简单地记录一下 使用在安装好node之后,我们可以使用npm命令,在项目的根目录,安装nodejs ...
随机推荐
- js 数组去重
这是一道常见的面试题,最近在做[搜索历史记录]功能也用到,开始用了 indexOf 方法,该方法在 ECMA5才有支持,对于 IE8- 就不支持了. 我们可以自己写一个函数(Array对象的方法都是定 ...
- c++ 指针(二)
函数指针 可以使用算法的地址传递给方法,传递之前要先完成以下工作 1.获取函数的地址 2.声明一个函数指针 3.使用函数指针来调用函数 1.获取函数的地址,只要使用函数名就可以 Fun2(Fun1); ...
- css的active事件在手机端不生效的解决方法
对一名前端来说,改页面的过程总是痛苦的,产品经理说要加个点击样式,于是加active的class,本来以为这样就OK了,没想到电脑上ok,本地测也是ok的,tomcat上一跑就没效果了.我甚至把! i ...
- JAVA GC 简单总结
GC分代 GC的英文全拼是Garbage Collection,意思是垃圾收集. Java 将堆内存分为三代来管理: - 年轻代 (Young Generation) - 年老代 (Old Gener ...
- 微软分布式云计算框架Orleans(2):容灾与集群(1)
在上一篇:微软分布式云计算框架Orleans(1):Hello World,我们大概了解了Orleans如何运用,当然上一篇的例子可以说是简单且无效的,因为用了Orleans不可能只写一个Hello ...
- dnsunlocker解决
环境:windows 10 中文企业版,firefox47, chrome51 安装了某个国外程序后,浏览器各种不正常,打开网页慢,或是无法打开,更严重的是会弹广告,各种广告. 然后在控制面板中卸载了 ...
- 【bzoj1601】[Usaco2008 Oct]灌水(MST)
题目:http://hzwer.com/1158.html 分析: 解法很巧妙,弄一个超级源,对某个点装水井相当于把这个点连向超级源,边权为这个点的点权,然后跑最小生成树就行了
- Webservice学习
参考博客1: http://www.cnblogs.com/lzhp/archive/2013/01/13/2858559.html 参考博客2:http://blog.csdn.net/shilei ...
- 使用jsp/servlet简单实现文件上传与下载
使用JSP/Servlet简单实现文件上传与下载 通过学习黑马jsp教学视频,我学会了使用jsp与servlet简单地实现web的文件的上传与下载,首先感谢黑马.好了,下面来简单了解如何通过使用 ...
- 关于mysql数据库行级锁的使用(一)
项目上一个业务需要对某条数据库记录加锁,使用的是mysql数据库 因此做了一个关于mysql数据库行级锁的例子做测试 package com.robert.RedisTest; import java ...