1.一起来学hibernate之hibernate简介
一、简介
Hibernate,是一个开源的ORM框架。所谓的ORM,即object relative mapping,就是对象关系映射。
那什么是对象关系映射?
对象,即java类,又称为实体类,对象一般用来存放数据;
关系:即关系型数据库,例如mySQL、oracle、DB2等等都是关系型数据库;
映射:个人理解为对象和数据库的表一一对应的桥梁,即实体对应数据库表,属性对应表中列。
那为什么需要hibernate?
hibernate提供一套api供开发者调用,通过api,可以简化对数据库的操作,可以让开发者不需要写太多的sql语句就能完成对数据库的操作,例如save(entity),那么hibernate会自动生成一条insert into 语句,然后将entity内的数据插入到数据库中;
hibernate提供不同的方言,不同的方言支持不同的关系型数据库,由于不同的数据库使用起来或多或少都有些不同,如果切换数据库那么很多sql语句必须修改,所以使用hibernate无需修改sql代码,hibernate自身会通过方言生成合适的sql语句,这样就可以达到随心所欲切换数据库;
当然,hibernate还有很多优点,当然这里仅仅罗列比较出色的优点。
学习hibernate,需要学习什么?
除了hibernate提供给开发者的api,还需要学习如何配置!
为什么要配置?
假如需要将一个实体内的数据插入到数据库表中,数据库如何知道数据是插入哪张表,如何知道插入哪一列?所以配置是为了将实体对应到数据库中指定的表,将实体内属性对应到表中的列。
二、实践(一个小案例)
需求:将实体User内数据存入数据库sys_user表中
环境:
1.添加jar包
hibernate3.jar antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar javassist-3.12.0.GA.jar jta-1.1.jar slf4j-api-1.6.1.jar hibernate-jpa-2.0-api-1.0.0.Final.jarmysql-connector-java-5.1.5-bin.jar
2.使用eclipse创建project工程---hibernate
3.在classpath 创建一个lib文件夹,添加以上jar包,并将jar包add buildpath
4.创建实体类User
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
}
5.在创建sys_user表
create table sys_user(
id int primary key not null auto_increment,
name )
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6.涉及到数据库操作,自然要连接数据库,在classpath下创建hibernate.cfg.xml文件,配置如下:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="foo">
<!-- 配置数据库信息 -->
<!-- 配置数据库方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 配置数据库url -->
<property name="connection.url">jdbc:mysql:///hibernate</property>
<!-- 配置数据库驱动(mysql) -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 配置数据库用户名 -->
<property name="connection.username">root</property>
<!-- 配置数据库密码 -->
<property name="hibernate.connection.password">1208</property>
<!-- 是否显示sql -->
<property name="hibernate.show_sql">true</property>
<!-- 导入映射文件 该文件就是实体与数据库表之间的对应关系-->
<mapping resource="com/hibernate/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
7.创建User.hbm.xml映射文件,配置User和sys_user之间的对应关系
<?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 package="com.hibernate">
<!-- 实体的名称、对应表名 -->
<class name="User" table="sys_user">
<!-- 主键id、主键id类型、在表中的列名 -->
<id name="id" type="int" column="id">
<!-- 自动增长 -->
<generator class="native"/>
</id>
<!-- 实体属性名、实体属性类型、在表中的列名 -->
<property name="name" type="string" column="name" length="20"/>
</class>
</hibernate-mapping>
8.测试程序
public class TestHibernate {
private static SessionFactory sessionFactory;
static {
Configuration cfg = new Configuration(); //用来维护配置文件的类
cfg.configure("hibernate.cfg.xml"); // 读取指定的主配置文件
sessionFactory = cfg.buildSessionFactory(); //根据配置文件生成Session工厂
}
public static void main(String[] args) {
User u = new User();
u.setName("save");
Session session = sessionFactory.openSession(); //打开一个新的Session
Transaction tx = session.beginTransaction(); //开始事务,执行操作失败后进行数据回滚
session.save(u);//保存
tx.commit(); //提交事务
session.close(); //关闭Session,释放资源
}
}
运行结果:
控制台打印:Hibernate: insert into sys_user (name) values (?)
运行成功!
总结:
调用save方法,传入实体,hibernate根据配置文件一一对应实体和数据表并生成sql语句对数据库执行操作!
1.一起来学hibernate之hibernate简介的更多相关文章
- Hibernate(一)__简介
一. hibernate是什么 (一)hibernate 是一个orm框架,orm (object relation mapping) 对象关系映射框架 o object -> 业务层(只对对象 ...
- 【hibernate】hibernate和mybatis的比较
理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉 ...
- Hibernate→ 《Hibernate程序开发》教材大纲
Hibernate ORM 概览 Hibernate 简介 Hibernate 架构 Hibernate 环境 Hibernate 配置 Hibernate 会话 Hibernate 持久化类 Hib ...
- 问题Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not found解决方法
问题Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not fo ...
- org.hibernate.HibernateException: /hibernate.cfg.xml not found等三个问题
初次配置hibernate在myeclipse上: 出现三个问题,怎么都不好使,比对代码,没有问题,查看路径还是没有问题: 1.org.hibernate.HibernateException: /h ...
- Hibernate之Hibernate环境搭建
Hibernate之Hibernate环境搭建 一.Hibernate环境搭建的步骤 1.添加Hibernate && SQLServer 的Jar antlr-2.7.7.jar d ...
- 【hibernate】Hibernate中save, saveOrUpdate, persist, merge, update 区别
Hibernate Save hibernate save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思.我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原 ...
- 【Hibernate】Hibernate的多表查询
在<[Hibernate]Hibernate的聚类查询.分组查询.排序与时间之差>(点击打开链接)一文中已经讲述过怎样利用HQL语句代替SQL语句.进行聚类查询.分组查询.排序与时间之差的 ...
- Structs hibernate spring=ssh简介
Structs hibernate spring Struts Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的. Struts框架可分为以下四 ...
随机推荐
- postman-根据接口文档进行测试
根据接口文档来测试 1.get请求
- Mac系统默认MAWP配置
MAC系统是自带apache的,配置起来也很容易,但是本身是不支持php的需要手动开启一下,这里记录一下配置过程 1.apache配置文件在/etc/apache2/httpd.conf,把Docum ...
- —linux 磁盘配额按用户管理(quota)
我根据下面的ref链接整理的基本是的按用户额度管理步骤 (按组的额度管理被简化掉) 我在Ubuntu服务器12.04下整理,其他版本的Ubuntu和Linux应该都没有问题的 (有任何错误都指正给我, ...
- 用BlendFunc实现舞台灯光和刮刮卡效果
[转]http://code.lovemiao.com/?p=136#more-136 之前写过一篇<不规则形状按钮的点击判定>,利用了CCRenderTexture创建一块画布,可以在上 ...
- 【228】◀▶ Excel 函数说明
官方帮助:Excel 函数(按字母顺序列出) 官方帮助:Excel 函数(按类别列出) 参考:EXCEL常用函数大全 01 N_ELEMENTS 表达式或者变量的元素个数. 02 DEFSYS ...
- JSONCPP安装
我刚刚开始从windows MFC下的开发转的LINUX下的C++开发.在写这篇文章之前我三次安装jsoncpp,每一次安装都犯不同的错误.为了我能够在下一次安装时不再犯错误.特写此文!JSONCPP ...
- Icinga快速安装与配置
Icinga快速安装与配置/* body */body { margin: 20px; padding: 0; font-family: "Lucida Grande", &quo ...
- 去掉DLL can move
1.OptionalHeader.DllCharacteristics = wNewDllCharacteristics; 用CFF打开,如果存在DLL can move这个选项,去掉即可 2.Rel ...
- easyui里弹窗的两种表现形式
easyui里弹窗的两种表现形式 博客分类: jQueryEasyUi 1.主JSP页面中描绘弹窗 <div id="centerDiv" data-options= ...
- 如何查看linux内核的版本号?
zz:http://www.cnblogs.com/hnrainll/archive/2011/06/08/2074957.html 方法一: 命令: uname -a 作用: 查看系统内核版本号及系 ...