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基础增删查改简单实例的更多相关文章

  1. Django笔记&教程 5-1 基础增删查改

    Django 自学笔记兼学习教程第5章第1节--基础增删查改 点击查看教程总目录 第四章介绍了模型类models.Model和创建模型,相当于介绍了数据库表和如何创建数据库表. 这一章将介绍如何使用模 ...

  2. Dapper基础增删查改、事务和存储过程

    1.前言 Dapper是一个轻量级的orm框架,上手也非常的简单,它可以实体映射,所以先准备实体如下: public class Couser { public int id { get; set; ...

  3. [Hibernate] 基本增删查改

    本文记录,Java 应用通过 Hibernate 对数据库 MySQL 进行基本的增删改查操作,即CRUD. 本例子的目录结构如下 hibernate.cfg.xml 存储数据库信息,如数据库类型,账 ...

  4. mysql入门基础增删查改

    数据查询语法(DQL) DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 语法: SELECT selection_list /*要查询的列名称*/ F ...

  5. Yii框架基础增删查改

    返回一条数据 Country::find()->one(); 返回所有数据 Country::find()->all(); 返回记录的数量 $country =Country::find( ...

  6. backbonejs mvc框架的增删查改实例

    一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https://github.com/nonocast/e ...

  7. Java连接MySQL数据库及简单的增删查改操作

    主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...

  8. java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)

    1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...

  9. nodejs连接mysql并进行简单的增删查改

    最近在入门nodejs,正好学习到了如何使用nodejs进行数据库的连接,觉得比较重要,便写一下随笔,简单地记录一下 使用在安装好node之后,我们可以使用npm命令,在项目的根目录,安装nodejs ...

随机推荐

  1. 熟悉css/css3颜色属性

    颜色属性无处不在.字体要用颜色,背景可以有颜色,粒子特效更是离不开颜色.本文参考了一些资料简单总结下以备日后查阅. css中颜色的定义方式: 十六进制色 RGB & RGBA HSL & ...

  2. js基础知识温习:构造函数与原型

    构造函数 构造函数主要用于初始化新对象.按照惯例,构造函数名第一个字母都要大写. 构造函数有别于其它函数在于它使用new操作符来调用生成一个实例对象.换句话说,如果一个函数使用new操作符来调用,则将 ...

  3. 一个用react+nodejs实现的笔记本小应用

    寒假回家产品经理一直叮嘱着要继续做学校团队的辣个项目,但是...,我到现在一点都还没做,而且还销声匿迹躲了起来藏了几天,是的我干了票大的,想把项目用一种新的架构实现了,所以这几天一直在偷偷摸摸的做一些 ...

  4. mongo集群

    http://blog.csdn.net/canot/article/details/50739359 http://blog.csdn.net/bluejoe2000/article/details ...

  5. 【JavaScript】 闭包 我战战兢兢的接触了它

    源:http://www.liaoxuefeng.com 1. 注意这里用了一个“创建一个匿名函数并立刻执行”的语法: (function (x) { return x * x; })(3); 理论上 ...

  6. linux 常用命令总结

    PS命令: 1.命令格式: ps[参数] 2.命令功能: 用来显示当前进程的状态 3.命令参数: a  显示所有进程 -a 显示同一终端下的所有程序 -A 显示所有进程 c  显示进程的真实名称 -N ...

  7. 屠龙之路_坚持就是胜利_NinthDay

    狭小的空间里,屠龙天团的少年们和alpha恶龙苦苦对峙了一夜!这恶龙还挺能熬的,厉害了word龙.无奈之下,五更天的时候,我们的屠龙少年只能先退出战场养精蓄锐,为了不让恶龙再次逍遥法外,机智的屠龙队长 ...

  8. Hibernate断网修改配置文件实现正常验证运行

    hibernate.cfg.xml中声明部分: <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Conf ...

  9. 通过自定义Attribute及泛型extension封装数据验证过程

    需求来源: 在日常工作中,业务流程往往就是大量持续的数据流转.加工.展现过程,在这个过程中,不可避免的就是数据验证的工作.数据验证工作是个很枯燥的重复劳动,没有什么技术含量,需要的就是对业务流程的准确 ...

  10. Mysql 5.7.12解压版的安装及配置系统编码

    这篇博文是由于上篇EF+MySql博文引发的,上篇博文中在Seed方法中插入中文数据到Mysql数据库中乱码,后来网上找了N种方法也没解决.重装了MySql并在安装过程中配置了系统编码,此篇记录一下. ...