ORM(Object Relation Mapping)是对象关系映射,是一个思想,它的作用是在关系数据库与对象之间做一个自动映射,将数据库中的表格映射到一个类,也就是持久化类,数据表中每行映射为对象,行中的各个字段映射为对象的属性,这样可以在开发中使用面向对象的思想来操作数据库。

  其中hibernate是ORM思想实现的一个持久层框架。

其中有三个主要的内容:1.持久化类(*.java) 2.映射文件(*.hbm.xml) 3.配置文件(*.cfg.xml)

使用Hibernate框架搭建一个最基本的应用(oracle)。。。

1....首先,创建一个工程,java或web

2....将hibernate有关的jar包导入及数据库驱动包

 

hibernate-release-4.3.11.Final
//由于我使用的4.3.11版本,我把其目录下/lib/required下的所有包都导入工程
//由于要与数据库连接,需要导入数据连接的驱动jar包

3....书写一个Javabean ---持久化类..须对应于数据表的各个字段

public class Info {
private String sno;
private String sname;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
} }

4....写一个映射文件,从hibernate包中找个(*.hbm.xml)然后修改,或者使用jboss tools插件生成一个(需要根据eclipse及java版本额外安装),作用是映射持久化类与数据表的不同字段

  一个持久化类对应一个映射文件xml,可有多个映射文件,代码中可以添加其他属性值

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--文件名为 持久化类.hbm.xml 存放在持久化类包中即可,在下面配置文件中配置此路径--> <!-- package 声明一个根包,或者在实体类名字加包名 -->
<hibernate-mapping package="com.xx">
<!-- 实体类 对应 表 -->
<class name="Info" table="info">
<!-- 主键 -->
<id name="sno" column="sno">
</id> <!-- 非主键 -->
<property name="sname" column="SNAME" >
</property>
</class> </hibernate-mapping>

5....书写一个配置文件,作用是存储链接数据库与映射文件的一些属性。。其方法同映射文件,找一个修改或者使用插件自动生成

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--文件名字为hibernate.cfg.xml 需要存放在src根目录下-->
<hibernate-configuration>
<session-factory>
<!-- 数据库连接配置 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">xxx</property>
<property name="connection.password">xxxx</property>
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property><!--连接方言,寻找属于自己的数据库类,可以选择低版本-->
<property name="show_sql">true</property><!--控制台输出sql语句-->
<!-- 加载所有映射(映射文件不止一个) --> <mapping resource="com/xx/Info.hbm.xml"/>
</session-factory>
</hibernate-configuration>

6.....已经配置完成,然后测试一下(插入操作)

public void add(){
Info info = new Info();
info.setSno("21");
info.setSname("张三sh");
//获取加载配置文件的管理类对象
Configuration config = new Configuration();
config.configure(); //加载
//创建session的工厂对象
SessionFactory sf = config.buildSessionFactory();
//创建session 一个会话(与数据库连接的会话)
Session session = sf.openSession();
//开启事务
Transaction ts = session.beginTransaction();
//执行语句(这是插入语句)
session.save(info);
//提交事务
ts.commit();
//关闭session
session.close();
//关闭session工厂对象
sf.close();
}

7...运行后 控制台可输出一个插入语句,然后进入数据库查看一下,是否插入成功。。。。。

-----这只是基本的测试是否成功,至于其他方法,继续测试即可,这里只列举简单的增删改查方法

  1.插入为上边代码

  2.查询方法,以主键查询

//以主键查询 get方法
Info info = (Info)session.get(Info.class,"1");
System.out.println(info.getSno());
System.out.println(info.getSname());
//输出结果
Hibernate: select info0_.sno as sno0_0_, info0_.SNAME as SNAME0_0_ from info info0_ where info0_.sno=?
1
张三 //以主键查询 load方法
Info info = (Info)session.load(Info.class,"1");
System.out.println(info.getSno());
System.out.println(info.getSname());
//输出结果
1
Hibernate: select info0_.sno as sno0_0_, info0_.SNAME as SNAME0_0_ from info info0_ where info0_.sno=?
张三

      注意:通过对比get与load方法,load方法是延迟执行sql代码,节省系统资源,除了主键,当查询其他属性字段时,才调用sql语句

  3.删除方法 delete

 

Info info = new Info();
info.setSno("24"); session.delete(info); //输出结果
Hibernate: select info_.sno, info_.SNAME as SNAME0_ from info info_ where info_.sno=?
Hibernate: delete from info where sno=?

      注意:通过执行结果,可以看出,删除操作是先通过主键查询,然后执行删除操作

  4.修改方法 update

Info info = new Info();
info.setSno("24"); session.update(info); //输出结果
Hibernate: update info set SNAME=? where sno=?

    注意:通过输出sql语句可以看出,如果持久化对象不设定字段值时,它也需要set,所以会传递null,所以更改时需要,主要各个字段的赋值

   

  

hibernate基本配置与简单增删改查的更多相关文章

  1. ado.net的简单数据库操作(三)——简单增删改查的实际应用

    果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...

  2. Hibernate通过createSQLQuery( )方法实现增删改查

    一.项目结构 二.hibernate核心配置文件:   hibernate.cfg.xm <?xml version="1.0" encoding="UTF-8&q ...

  3. 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

    专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...

  4. Mybatis实现简单增删改查

    Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...

  5. Redis:五种数据类型的简单增删改查

    Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...

  6. Hibernate3回顾-5-简单介绍Hibernate session对数据的增删改查

    5. Hibernate对数据的增删改查 5.1Hibernate加载数据 两种:get().load() 一. Session.get(Class arg0, Serializable arg1)方 ...

  7. idea+spring4+springmvc+mybatis+maven实现简单增删改查CRUD

    在学习spring4+springmvc+mybatis的ssm框架,idea整合简单实现增删改查功能,在这里记录一下. 原文在这里:https://my.oschina.net/finchxu/bl ...

  8. Hibernate之API初识及增删改查实现

    声明:关于hibernate的学习.非常大一部分东西都是概念性的. 大家最好手里都有一份学习资料,在我的博文中.我不会把书本上的概念一类的东西搬过来.那没有不论什么意义.关于hibernate的学习, ...

  9. Android_ADB 常用 shell命令 和 sqlite3 简单增删改查

    今天学习了一个ADB的常用命令.接下来简单使用几个常用ADB shell 命令. 首先我们得明白什么是adb.exe ADB -Android Debug Bridge, 是 Android sdk ...

随机推荐

  1. 1.1 Introduction中 Distribution官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Distribution 分布式(Distribution) The partiti ...

  2. JSP语法基础(一)

    一.JSP页面中的凝视 (1)HTML凝视 <!-- comment [ <%=expression %> ] --> 能在client显示的一种凝视,标记内的全部JSP脚本元 ...

  3. Dcloud课程1 APP的架构有哪些

    Dcloud课程1 APP的架构有哪些 一.总结 一句话总结:B/S架构和C/S构架 1.APP的分类? 主流的四大APP系统:1.苹果ios系统版本,开发语言是Objective-C:2.微软Win ...

  4. Spring Profiles example--转载

    原文地址:http://www.mkyong.com/spring/spring-profiles-example/ Spring @Profile allow developers to regis ...

  5. JS数据类型的转换规则

    数据类型转换的规则 1 如果只有一个值,判断这个值是真还是假,遵循只有0,NaN,'',null,undefined这五个是假的,其余的都是真 2 如果是两个值比较是否相等,遵循以下规则: ![]-& ...

  6. Loadrunner--web_find和web_reg_find的用法和区别

    一.web_find()函数 该函数的作用是“在页面中查找相应的内容”,常用参数及含义如下: web_find("web_find", //定义该查找函数的名称 "Rig ...

  7. 【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules

    [链接]h在这里写链接 [题意] 在这里写题意 [题解]     dp[i][0] 第i个位置,bob没有决策权     dp[i][1] 第i个位置,bob有决策权     dp[n][0] = 0 ...

  8. (嵌入式开发)移植最新uboot

    一:准备移植 1.从下面的官网下载最新的U-boot.用google英文版搜索最新的u-boot源码  ftp://ftp.denx.de/pub/u-boot/ 2.建立sourceinsight工 ...

  9. Apache多虚拟主机多版本PHP(5.3+5.6+N)共存运行配置全过程

    摘要: 为需要实现在同一台Linux服务器上面,同时运行多个不同版本的PHP程序,本文我们将使用FastCGI方式加载,并把过程详细记录下来方便大家参考. 常规的PHP配置方式有很多种,例如CGI.f ...

  10. workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的)

    workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的) 一.总结 1.下面链接里面还有一个来聊的php聊天室源码可以学习 2. ...