Hibernate:HIbernate配置详解-HelloWorld
hibernate介绍:
Hibernate是一个开源的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
它不仅提供了从java类到数据库表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库,Hibernate可以大大减少
操作数据库的工作量。另外Hibernate可以利用代理模式简化载入类的过程,这将大大减少利用Hql从数据库提取数据的代码编写量,从而节约开发时间
和开发成本Hibernate可以和多种web服务器或者应用服务器良好集成,如今已经支持几乎所有的流行数据库服务器。
2. Hibernate原理:
Hibernate技术本质上是一个提供数据库服务的中间件。Hibernate的工作原理,他是利用数据库以及其他一些配置文件如:hibernate.cfg.xml,
xxx.hbm.xml等来为应用程序提供数据持久化服务的。
- Configuration来读取hibernate.cfg.xml文件
- 使用Configuration对象创建SessionFactory
- 用SessionFactory来打开一个Session
- 创建事务Transaction
- begin事务
- 使用Session进行数据库操作
- 关闭或回滚事务
- 关闭Session
3. 配置Hibernate 声明:我使用的是JDK1.7,Hibernate3.6.0
3.1 导入相关Jar包:Hibernate模式不只是自己内部实现,同样也导入了许多外部的jar包,下面是Hibernate3.6.0框架的基本jar包
我使用的是mysql数据库,可以根据自己使用的数据库添加相关驱动Jar包
3.2 先创建一个User实体
package com.a_helloworld;
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 + "]";
}
}
3.3 配置User实体在数据库表的映射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 package="com.a_helloworld"> <!-- 属性table 表示在数据库中的表名 -->
<class name="User" table="user_1" >
<id name="id" column="id" type="int">
<!-- 值native表示会根据数据库来创建不同的主键生成策略 -->
<generator class="native"></generator>
</id>
<property name="name" column="name" type="string"></property>
</class>
</hibernate-mapping>
3.4 简单配置hibernate.cfg.xml配置文件,这个文件名可以随便修改(xxx.cfg.xml),但是没多大意义,一般不建议修改。配置的信息如下:
1 <!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="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.url">jdbc:mysql:///user</property> <!-- 要根据自己使用的数据库来配置相对应的属性,也成方言,针对不同数据库
关于怎么配置可以查看HibernateAPI
-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Hibernate 創建的SQL語句会显示在控制台 -->
<property name="hibernate.show_sql">true</property> <!-- 选择方案,常用值:validate | update | create | create-drop -->
<property name="hbm2ddl.auto">update</property> <mapping resource="com/a_helloworld/user.hbm.xml"/> -- 导入实体映射配置,程序每次启动都会自动检索 </session-factory>
</hibernate-configuration>
以上Hibernate简单配置已经基本完成,可以添加一个测试类来测试是否成功
package com.a_helloworld; import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;
import org.junit.Test; public class Demo { private static SessionFactory sf = new Configuration()//
.configure("hibernate.cfg.xml")//
.buildSessionFactory(); @Test
public void addUser(){
Session session = null;
Transaction tran = null;
try{
session = sf.openSession(); // 创建一个Session
tran = session.beginTransaction(); //开启事务 User user = new User();
user.setName("张三");
session.save(user); tran.commit();//事务提交
}catch(Exception e){
tran.rollback(); //事务回滚
throw(e);
}finally{
session.close(); //关闭session
}
} @Test
public void getUser(){
Session session = null;
Transaction tran = null;
try{
session = sf.openSession(); // 创建一个Session
tran = session.beginTransaction(); //开启事务 /*这里指明你要获得哪个类型,Hibernate会根据类名查询映射配置文件到数据库查询哪张表,根据指定
* id查询实体,通过反射机制创建实体对象
*/
User user = (User) session.get(User.class, 1); //执行查询,get tran.commit();//事务提交
}catch(Exception e){
tran.rollback(); //事务回滚
throw(e);
}finally{
session.close(); //关闭session
}
}
@Test
public void updateUser(){
Session session = null;
Transaction tran = null;
try{
session = sf.openSession(); // 创建一个Session
tran = session.beginTransaction(); //开启事务 User user = new User();
user.setId(1);//这里指定了要更新的数据id为1
user.setName("李四");// 把名字 “张三” 修改为 “李四”
session.update(user);//执行更新 tran.commit();//事务提交
}catch(Exception e){
tran.rollback(); //事务回滚
throw(e);
}finally{
session.close(); //关闭session
}
} @Test
public void deleteUser(){
Session session = null;
Transaction tran = null;
try{
session = sf.openSession(); // 创建一个Session
tran = session.beginTransaction(); //开启事务 User user = new User();
user.setId(1);//这里指定了要更新的数据id为1
session.delete(user); //执行删除 tran.commit();//事务提交
}catch(Exception e){
tran.rollback(); //事务回滚
throw(e);
}finally{
session.close(); //关闭session
}
} }
如需转载请说明出处:http://www.cnblogs.com/gudu1/p/6879990.html
Hibernate:HIbernate配置详解-HelloWorld的更多相关文章
- (转)Hibernate的配置详解
http://blog.csdn.net/yerenyuan_pku/article/details/65041077 在<Hibernate快速入门>一文中,我有讲到Hibernate的 ...
- Hibernate Session & Transaction详解
Hibernate Session & Transaction详解 HIbernate中的Session Session是JAVA应用程序和Hibernate进行交互时使用的主要接口,它也是持 ...
- hibernate enum映射详解
hibernate enum映射详解 在这里介绍注解的形式,如果想要了解XML配置的方式,可以自行查找相关资料. 例如以下Entity @Entity @Table(name = "t_us ...
- hibernate缓存机制详解
hiberante面试题—hibernate缓存机制详解 这是面试中经常问到的一个问题,可以按照我的思路回答,准你回答得很完美.首先说下Hibernate缓存的作用(即为什么要用缓存机制),然后再 ...
- Hibernate4搭建Log4J日志管理(附Log4j.properties配置详解)
1.首先加入slf4j的jar包,即slf4j-api-1.6.1.jar 在hibernate官网下载hibernate-release-4.2.2.Final.zip并解压,在hibernate- ...
- 黑苹果引导工具 Clover 配置详解及Clover Configurator使用
黑苹果引导工具 Clover 配置详解及Clover Configurator使用 2017-03-11 14:01:40 by SemiconductorKING 转自:@三个表哥 简介: 可 ...
- logback使用配置详解
title: logback使用配置详解 date: 2017-04-25 16:42:49 tags: 日志 --- 1.介绍 Logback是由log4j创始人设计的另一个开源日志组件,它当前分为 ...
- 【Spring】——声明式事务配置详解
项目中用到了spring的事务: @Transactional(rollbackFor = Exception.class, transactionManager = "zebraTrans ...
- Tomcat记录-tomcat常用配置详解和优化方法(转载)
常用配置详解 1 目录结构 /bin:脚本文件目录. /common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载). /conf:存放配置文件,最重要的是serv ...
随机推荐
- 跳跃【BFS】
From 牛客网:https://ac.nowcoder.com/acm/problem/25160
- Linux网络课程学习第四天
课程内容包括:管道符.重定向与环境变量. 学习心得:个人感觉本章节还是不太好理解,尤其是对自己的基础还不是特别的扎实课余时间还是要反复的复习.
- qsort 与sort 对结构体排序实例
qsort 与sort 对结构体排序实例 #include<bits/stdc++.h> using namespace std; typedef struct { string book ...
- "Chrome的network中无法显示OPTIONS请求"的解决方案
目录 #事故现场 #分析及解决方法 #参考 #事故现场 在前端发送一个跨域请求的时候,要先发送个options请求,从而获知服务端是否允许该跨域请求. 跨域资源共享标准新增了一组 HTTP 首部字段, ...
- phpstorm安装bootstrap插件
一个插件可以很好的让我们工作节约时间 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 We ...
- php如何获取单选复选和选择框的值
1.很久没有写基础的东西了复习一下(往往简单的东西才复杂) <body> 选择语句 <form action="demo.php" method="po ...
- mysql 连接权限
命令解释: . 第一个表示库,第二个表示表; .对全部数据库的全部表授权,so.ok 表示只对so这个库中的ok表授权 root 表示要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的 '% ...
- 用Navicat连接mysql报错:2003-Can't connect to MySql server on '10.100.0.109'(10039)
问题描述 在 window 系统上,用 Navicat 连接 Mysql 数据库,弹出以下提示 问题原因 Mysql 数据库未启动 解决方案:启动 Mysql 数据库 1.点击桌面左下角运行 cmd ...
- 3ds Max File Format (Part 1: The outer file format; OLE2)
The 3ds Max file format, not too much documentation to be found about it. There are some hints here ...
- mybatis(五):源码分析 - 获取boundsql流程