1、内容: hibernate 也是一个经典的[数据访问中间件] 开源框架。
2、hibernate核心组件
SessionFactory[整个数据的操作]重量级组件
Session[对数据库的一次业务操作] 轻量级
3、ORM(对象关系映射): 是一种数据访问层 解决方案、用它开源很好的移植到不同数据库平台。
通过 对象模型 操作 数据库关系模型
4、hibernate配置
配置SessionFactory
开发大致步骤:
(参考文档路径)\hibernate-distribution-3.6.8.Final-dist\hibernate-distribution-3.6.8.Final\documentation\manual\zh-CN\pdf
(配置文件路径)
hibernate3.jar\org\hibernate - ZIP 压缩文件, 解包大小为 9,174,527 字节
1、配置 hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!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>
<!--Database connection settings -->
<!--连接数据库-->
<property name="connection.driver_class"
>oracle.jdbc.driver.OracleDriver</property>
<!--连接URL-->
<property name="connection.url"
>jdbc:oracle:thin:@localhost:1521:orcl</property>
<!--帐号-->
<property name="connection.username"
>scott</property>
<!--密码-->
<property name="connection.password"
>tiger</property>
<!--SQL dialect 方言(hiernate可以将对对象模型的操作转为对oracle实际的SQL)-->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!--Enable Hibernate's automatic session context management -->
<!--将通过当前sessionFactory得到的session会被绑定到当前的线程-提高性能-->
<property name="current_session_context_class">thread</property>
<!--Echo all executed SQL to stdout -->
<!--将hibernate转成的SQL语句-显示到控制台->
<property name="show_sql">true</property>
<mapping resource="com/it/bean/UserInfo.hbm.xml"/>
</session-factory>
</hibernate-configuration>
com/it/bean/UserInfo.hbm.xml
(文件路径)hibernate3.jar\org\hibernate - ZIP 压缩文件, 解包大小为 9,174,527 字节
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.it.bean">
<class name="UserInfo" table="userInfo">
<id name="user_id" column="user_id">
<!-- 主键生成策略 -->
<generator class="assigned"></generator>
</id>
<property name="user_pwd" column="user_pwd"></property>
<property name="user_sex" column="user_sex"></property>
2、创建SessionFactory
public class Text1{
public static void main(String[] args){
//创建SessionFactory
SessionFavtory sessionFactory = null;
try{
sessionFactory = new Configuration.configure().buildSessionFactory();
}catch(Exception e){
e.printStackTrace();
}
}
}
3、创建Session
public class Text1{
public static void main(String[] args){
//创建SessionFactory
SessionFavtory sessionFactory = null;
//创建Session
Session session = null;
try{
sessionFactory = new Configuration.configure().buildSessionFactory();
session = sessionFactory.getCurrentSession();
}catch(Exception e){
e.printStackTrace();
}
}
}
4、创建Transaction(事务处理对象)
public class Text1{
public static void main(String[] args){
//创建SessionFactory
SessionFavtory sessionFactory = null;
//创建Session
Session session = null;
//事务
Transaction tx = null;
try{
sessionFactory = new Configuration.configure().buildSessionFactory();
session = sessionFactory.getCurrentSession();
}catch(Exception e){
e.printStackTrace();
}
}
}
5、开启事务
public class Text1{
public static void main(String[] args){
//创建SessionFactory
SessionFavtory sessionFactory = null;
//创建Session
Session session = null;
//事务
Transaction tx = null;
try{
sessionFactory = new Configuration.configure().buildSessionFactory();
session = sessionFactory.getCurrentSession();
//开启事务
tx = sesison.beginTransaction();
}catch(Exception e){
e.printStackTrace();
}
}
}
6、提交事务
public class Text1{
public static void main(String[] args){
//创建SessionFactory
SessionFavtory sessionFactory = null;
//创建Session
Session session = null;
//事务
Transaction tx = null;
try{
sessionFactory = new Configuration.configure().buildSessionFactory();
session = sessionFactory.getCurrentSession();
//开启事务
tx = sesison.beginTransaction();
//提交
tx.commit();
}catch(Exception e){
e.printStackTrace();
}
}
}
7、执行操作
public class Text1{
public static void main(String[] args){
//创建SessionFactory
SessionFavtory sessionFactory = null;
//创建Session
Session session = null;
//事务
Transaction tx = null;
try{
sessionFactory = new Configuration.configure().buildSessionFactory();
session = sessionFactory.getCurrentSession();
//开启事务
tx = sesison.beginTransaction();
UserInfo u = new UserInfo("9989","sd","23");
//执行U对象 操作 保存
Session.save(u); -------添加
//session.delete(u); ------删除
//UserInfo u1 = (UserInfo)session.get(UserInfo.class,"1001"); ------查询
//System.out.println(u1.getUser_pwd());
//u1.setUser_sex("weinihaom?-sidashu"); ----修改
// Query query = session.createQuery("from UserInfo"); //query.list(); -------查询2
//提交
tx.commit();
}catch(Exception e){
e.printStackTrace();
}
}
}
8、异常处理块,事务回滚
public class Text1{
public static void main(String[] args){
//创建SessionFactory
SessionFavtory sessionFactory = null;
//创建Session
Session session = null;
//事务
Transaction tx = null;
try{
sessionFactory = new Configuration.configure().buildSessionFactory();
session = sessionFactory.getCurrentSession();
//开启事务
tx = sesison.beginTransaction();
UserInfo u = new UserInfo("9989","sd","23");
//执行U对象 操作 保存
Session.save(u);
//提交
tx.commit();
}catch(Exception e){
e.printStackTrace();
//事务回滚
tx.rollback();
}
}
}
封装---工具包
package com.it.dao.util;
/**
*单例模式
*/
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class SessionFactoryUtils {
private static SessionFactory sessionFactory;
static{
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
}
基础包(BaseDAO)
package com.it.dao;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;
import com.it.dao.util.SessionFactoryUtils;
public class BaseDAO<T>{
/**
*查询2
*/
public List<T> find(String hql,String...params){
Session session = null;
Transaction tx = null;
List<T> list = null;
try {
session = SessionFactoryUtils.getSessionFactory().getCurrentSession();
tx = session.beginTransaction();
Query query =session.createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setString(i, params[i]);
}
list=query.list();
tx.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
tx.rollback();
}
return list;
}
public List<T> find(String hql){
Session session = null;
Transaction tx = null;
List<T> list = null;
try {
session = SessionFactoryUtils.getSessionFactory().getCurrentSession();
tx = session.beginTransaction();
Query query =session.createQuery(hql);
list=query.list();
tx.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
tx.rollback();
}
return list;
}
public void add(Object o){
Session session = null;
Transaction tx = null;
try {
session = SessionFactoryUtils.getSessionFactory().getCurrentSession();
tx = session.beginTransaction();
session.save(o);
tx.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
tx.rollback();
}
}
/**
*查询
*/
public T get(Class<T> clz,String OID){
Session session = null;
Transaction tx = null;
T t=null;
try {
session = SessionFactoryUtils.getSessionFactory().getCurrentSession();
tx = session.beginTransaction();
t=(T) session.get(clz, OID);
tx.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
tx.rollback();
}
return t;
}
/**
*删除
*/
public void delete(Class<T> clz,String OID){
Session session = null;
Transaction tx = null;
Object o =get(clz,OID);
try {
session = SessionFactoryUtils.getSessionFactory().getCurrentSession();
tx = session.beginTransaction();
session.delete(o);
tx.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
tx.rollback();
}
}
/**
*修改
*/
public void update(Object o){
Session session = null;
Transaction tx = null;
try {
session = SessionFactoryUtils.getSessionFactory().getCurrentSession();
tx = session.beginTransaction();
session.update(o);
tx.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
tx.rollback();
}
}
public void delete(Object o){
Session session = null;
Transaction tx = null;
try {
session = SessionFactoryUtils.getSessionFactory().getCurrentSession();
tx = session.beginTransaction();
session.delete(o);
tx.commit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
tx.rollback();
}
}
}
userDAO
package com.it.dao;
import java.util.List;
import com.it.bean.UserInfo;
public class UserDAO extends BaseDAO<UserInfo>{
/**
*查询
*/
public List<UserInfo> findUsers(UserInfo user){
String hql = "from UserInfo user where user.user_id like ? and user.user_pwd like ? and user.user_sex like ? ";
String []params={"%"+user.getUser_id()+"%","%"+user.getUser_pwd()+"%","%"+user.getUser_sex()+"%"};
return super.find(hql,params);
}
/**
*查询2
*/
public List<UserInfo> findAllUsers(){
String hql = "from UserInfo";
return super.find(hql);
}
public void add(UserInfo user){
super.add(user);
}
public void delete(String id){
super.delete(UserInfo.class, id);
}
public void delete(UserInfo user){
super.delete(user);
}
public UserInfo get(String user_id){
return super.get(UserInfo.class,user_id);
}
}
package com.it.test;
import java.util.List;
import com.it.bean.UserInfo;
import com.it.dao.BaseDAO;
import com.it.dao.UserDAO;
public class Test {
public static void main(String[] args) {
UserDAO dao = new UserDAO();
//UserInfo u = new UserInfo("1","1","1");
//UserInfo u = new UserInfo("1","1","");
List<UserInfo> users = dao.findUsers(u);
for (UserInfo user : users) {
System.out.println(user.getUser_pwd());
}
}
}
- 三大框架之hibernate入门
hibernate入门 1.orm hibernate是一个经典的开源的orm[数据访问中间件]框架 ORM( Object Relation Mapping)对象关 ...
- .net core 基于Dapper 的分库分表开源框架(core-data)
一.前言 感觉很久没写文章了,最近也比较忙,写的相对比较少,抽空分享基于Dapper 的分库分表开源框架core-data的强大功能,更好的提高开发过程中的效率: 在数据库的数据日积月累的积累下,业务 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图实体类映射 下一篇:Farseer.net轻量级ORM开源 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:表的数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:表实体类映射 下一篇:Farseer.net轻量级ORM开源框 ...
- Farseer.net轻量级开源框架 入门篇:添加数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 分类逻辑层 下一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 ...
- Farseer.net轻量级开源框架 入门篇:修改数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 ...
- Farseer.net轻量级开源框架 入门篇:删除数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 查询数据详解 ...
- Farseer.net轻量级开源框架 入门篇:查询数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 下一篇:Farseer.net轻量级开源框架 中级篇: Where条 ...
- PDF.NET SOD 开源框架红包派送活动 && 新手快速入门指引
一.框架的由来 快速入门 有关框架的更多信息,请看框架官方主页! 本套框架的思想是借鉴Java平台的Hibernate 和 iBatis 而来,兼有ORM和SQL-MAP的特性,同时还参考了后来.N ...
随机推荐
- 装X神器--Hacker Typer
昨天在伯乐在线看到了这样一篇文章<终于也能像电影中的黑客那样写代码咯>,觉得很酷炫,介绍了一个叫Hacker Typer的工具 网址:http://hackertyper.net/ 在 P ...
- PHP的学习--使用PhpDocumentor 2生成API文档
官网地址:http://www.phpdoc.org/ 项目地址:https://github.com/phpDocumentor/phpDocumentor2 phpDocumentor 2是一个可 ...
- [转载]在SQL Server 中,如何实现DBF文件和SQL Server表之间的导入或者导出?
原来使用SQL Server 2000数据库,通过DTS工具很方便地在SQL Server和DBF文件之间进行数据的导入和导出,现在安装了SQL Server2005之后,发现其提供的“SQL Ser ...
- Azure ARM (4) 开始创建ARM Resource Group并创建存储账户
<Windows Azure Platform 系列文章目录> 好了,接下来我们开始创建Azure Resource Group. 1.我们先登录Azure New Portal,地址是: ...
- Mac下如何配置环境变量
以前都是在Windows平台上开发,在配置一些框架的时候,为了能够在命令行中调用,一般都会配置bin目录到环境变量中,这是为了让命令行在执行的时候,能够查找到对应的执行文件. 现在工作使用Mac,配置 ...
- VS2008 C++ 调用MATLAB 2009b 生成的DLL .
转载: 刚开始学习用VC++调用matlab生成的DLL,找了网上一些资料,难以找到vs2008与MATLAB2009b版本的,按照以往版本做的总是有很多错误.经过两天努力,终于调试成功,这里将经验总 ...
- C# Socket系列三 socket通信的封包和拆包
通过系列二 我们已经实现了socket的简单通信 接下来我们测试一下,在时间应用的场景下,我们会快速且大量的传输数据的情况! class Program { static void Main(stri ...
- 爬虫--Scrapy
Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...
- HTML5 input事件检测输入框变化
之前一直用change事件来监听输入框内容是否发生变化,只有当输入框失去焦点时才会触发,没想到html5还有个input事件,只要输入框内容发生变化就会立即触发,既然有这么好的东西我们干嘛放着不用呢, ...
- 【转载】jquery validate验证插件,在ajax提交方式下的验证
正常的表单都是使用submit按钮来提交,jquery validate插件可以方便的做表单验证. 做一个发送短信的功能,向目标表插入多条记录,界面采用ajax来提交表单,等待效果直接用ext的遮罩 ...