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 ...
随机推荐
- Theano3.2-练习之数据集及目标函数介绍
来自http://deeplearning.net/tutorial/gettingstarted.html#gettingstarted 一.下载 在后续的每个学习算法上,都需要下载对应的文档,如果 ...
- Kafka笔记
最近做的一个项目需要跟Kafka打交道,学习了很多相关知识,就到这里来汇总一下. kafka是一个传递消息的系统,原本是用来快速记录海量log的,现在也经常用作消息队列.它主要由三个部分组成,prod ...
- yii2搭建完美后台并实现rbac权限控制实例教程
1.安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 或者参考yii2实战教程之详细安装步骤 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/con ...
- hadoop fs -mkdir testdata错误 提示No such file or directory
解决方法: hadoop fs -mkdir -p testdata
- 在 ASP.NET 中执行 URL 重写的方法
由于需要我们经常会想将动态的页面做成伪静态的,或者在get传值的时候使其简洁明了(实现“可删节”的URL),这时我们需要用到URL重写,微软的MSDN上有详细的原理和使用介绍.我这里就将一种简单的使用 ...
- 用ElasticSearch和Protovis实现数据可视化
搜索引擎最重要的目的,嗯,不出意料就是搜索.你传给它一个请求,然后它依照相关性返回你一串匹配的结果.我们可以根据自己的内容创造各种请求结构,试验各种不同的分析器,搜索引擎都会努力尝试提供最好的结果. ...
- poj3233 矩阵等比数列求和 二分
对于数列S(n) = a + a^2 + a^3 +....+ a^n; 可以用二分的思想进行下列的优化. if(n & 1) S(n) = a + a^2 + a^3 + ....... + ...
- Shiro 学习笔记(二)——shiro身份验证
身份验证: 在应用中证明他就是他本人.一般上用身份证.用户/密码 来证明. 在shiro中,用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能验证用户身 ...
- Android GUI系统
图解Android - Android GUI 系统 (1) - 概论 图解Android - Android GUI 系统 (2) - 窗口管理系统 图解Android - Android GUI ...
- Web前端性能优化教程09:图像和Cookie优化
本文是Web前端性能优化系列文章中的第九篇,主要讲述内容:图像和Cookie优化.完整教程可查看: 一. 图像优化 图像基础知识 gif: 适用于动画效果,例如提示的滚动条图案 jpg: 是一种使用 ...