- 浏览: 1041236 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
wenson:
lzjzy520 写道 求 项目完整元代码已经够清楚了,看不懂 ...
使用Spring JavaMail发送邮件总结 -
lzjzy520:
求 项目完整元代码
使用Spring JavaMail发送邮件总结 -
xiejx618:
能提高多大的性能? 不能用数据来说话吧希望你能用jmeter做 ...
利用APR本地库提高Tomcat性能 -
mrwalter:
学习了,挺好用的,局域网内速度很快
ssh远程文件传输命令scp -
wcily123:
不错
ssh远程文件传输命令scp
Hibernate简介
Hibernate寓意:Let Java objects hibernate in the relational database.
Hibernate 是Java应用和关系数据库之间的桥梁,负责Java对象和关系数据库之间的映射的ORM中间件。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java开发人员可以随心所欲的使用对象编程思维来操纵数据库。简单的说就是:
1.封装了通过JDBC访问数据库操作。
2.向上层应用提供访问面向对象数据访问的API。
创建Hibernate配置文件
通过一个例子practice 演示如何运用Hibernate来访问关系数据库。
Practice 工程的功能:
通过Hibernate保存客户(customer)信息。
其Hibernate应用结构图如下:
―――――――――――――――――――――――――――
Practice 应用
Customer Class ; action Class;Business Class
――――――――――――――――――――――――――――
――――――――――――――――――――――――――――
Hibernate xml
对象-关系映射文件 Hibernate ApI
Hibernate 配置文件
――――――――――――――――――――――――――――
――――――――――――――――――――――――――――
关系数据库(Mysql)
CUSTOMERS 表
――――――――――――――――――――――――――――
创建持久化类
Hibernate 从Hibernate配置文件中读取和数据库连接相关的信息。
配置文件有两种形式:
一种是XML格式的文件:hibernate.cfg.xml
一种是Java属性文件:hibernate.properties
这个实例中我们将使用hibernate.cfg.xml。
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
true
false
net.sf.hibernate.dialect.MySQLDialect
org.gjt.mm.mysql.Driver
jdbc:mysql://localhost:3306/netstore
root
123456
true
gb2312
插入位置在src目录下:
创建O/R对象-关系映射文件
创建持久化的类Customer.java
package entity;import java.io.Serializable;
public class Customers implements Serializable {
private Integer id;
private String name;
private int age;
public Customers() {
}
public int getAge() {
return age; }
public void setAge(int age) {
this.age = age;
}
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;
}}
Get/set 方法的命名必须符合JavaBean的规范,否则Hibernate会报出异常,具体请参照相关资料。
关于Serializable接口:
Hibernate 并不要求持久化类必须实现java.io.Serializable接口,但是对于采用分布式结构的Java应用,当Java对象在不同的进程节点之间传输时,这个对象必须实现这个接口;如果希望对HttpSession中存放的Java对象进行持久化,那么这个Java对象必须实现Serializable接口。
关于不带参数的构造方法:
public Customers() { }
Hibernate要求持久化类必须提供一个不带参数的默认的构造方法,原因请参考相关资料。
创建Mysql数据库
数据库名称:netstroe
Customer表DDL定义如下:CREATE TABLE `customers` ( `Id` bigint(20) NOT NULL default '0', `name` varchar(15) default NULL, `age` int(11) default NULL, PRIMARY KEY (`Id`)) TYPE=MyISAM;
创建对象-关系映射文件
创建对象-关系映射文件:Customers.hbm.xml
代码如下:
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
name="entity.Customers"
table="customers">
name="id"
type="java.lang.Integer"
column="id"
>
name="name"
type="java.lang.String"
column="name"
length="15"
/>
name="age"
type="int"
column="age"
length="11"
/>
引入Hibernate所需的jar包
Hibernate2.jar、hibernate-tools.jar
通过Hibernate API 访问MYSQL数据库
创建业务逻辑类:useHibernate.java
代码如下:
package business;
import entity.Customers;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.cfg.Configuration;
public class useHibernate {
public static SessionFactory sessionFactory;
/** 初始化Hibernate,创建SessionFactory实例 */
public void saveCustomers(Customers customers) throws Exception {
Configuration config = null;
config = new Configuration().configure();
// 创建一个SessionFactory 实例
sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
/* 开始一个事务 */
tx = session.beginTransaction();
session.save(customers);
/* 提交事务 */
tx.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
if (tx != null)
tx.rollback();
throw e;
} finally {
session.close();
}
}}
测试Hibernate配置是否成功
创建Junit测试:testhibernate.java
有关Junit请参考相关资料:
package test;
import business.useHibernate;
import entity.Customers;import junit.framework.TestCase;
Customers customers = new Customers();
customers.setId(new Integer(330121));
customers.setAge(24);
customers.setName("huhpreal");
useHibernate usehibernate = new useHibernate();
try {
usehibernate.saveCustomers(customers);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
查看后台打印信息:
(cfg.Environment 403 ) Hibernate 2.0.3
(cfg.Environment 432 ) hibernate.properties not found
(cfg.Environment 452 ) using CGLIB reflection optimizer
(cfg.Environment 462 ) JVM proxy support: true
(cfg.Configuration 703 ) Configuration resource: /hibernate.cfg.xml
(cfg.Configuration 270 ) Mapping resource: hbm/Customers.hbm.xml
(cfg.Binder 178 ) Mapping class: entity.Customers -> customers
(cfg.Configuration 885 ) Configured SessionFactory: null
(cfg.Configuration 492 ) processing one-to-many association mappings
(cfg.Configuration 503 ) processing foreign key constraints
(impl.SessionFactoryImpl 132 ) building session factory
(dialect.Dialect 83 ) Using dialect: net.sf.hibernate.dialect.MySQLDialect
(connection.DriverManagerConnectionProvider 41 ) Hibernate connection pool size: 20
(connection.DriverManagerConnectionProvider 70 ) using driver: org.gjt.mm.mysql.Driver at URL: jdbc:mysql://localhost:3306/netstore
(connection.DriverManagerConnectionProvider 71 ) connection properties: {useUnicode=true, user=root, password=123456, characterEncoding=gb2312}
(impl.SessionFactoryImpl 162 ) Use outer join fetching: false
(impl.SessionFactoryImpl 185 ) Use scrollable result sets: true
(impl.SessionFactoryImpl 186 ) JDBC 2 max batch size: 15
(impl.SessionFactoryImpl 194 ) echoing all SQL to stdout
(impl.SessionFactoryObjectFactory 82 ) no JDNI name configured
(impl.SessionFactoryImpl 269 ) Query language substitutions: {}
Hibernate 配置使用成功
查看数据库:
插入成功!
Hibernate寓意:Let Java objects hibernate in the relational database.
Hibernate 是Java应用和关系数据库之间的桥梁,负责Java对象和关系数据库之间的映射的ORM中间件。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java开发人员可以随心所欲的使用对象编程思维来操纵数据库。简单的说就是:
1.封装了通过JDBC访问数据库操作。
2.向上层应用提供访问面向对象数据访问的API。
创建Hibernate配置文件
通过一个例子practice 演示如何运用Hibernate来访问关系数据库。
Practice 工程的功能:
通过Hibernate保存客户(customer)信息。
其Hibernate应用结构图如下:
―――――――――――――――――――――――――――
Practice 应用
Customer Class ; action Class;Business Class
――――――――――――――――――――――――――――
――――――――――――――――――――――――――――
Hibernate xml
对象-关系映射文件 Hibernate ApI
Hibernate 配置文件
――――――――――――――――――――――――――――
――――――――――――――――――――――――――――
关系数据库(Mysql)
CUSTOMERS 表
――――――――――――――――――――――――――――
创建持久化类
Hibernate 从Hibernate配置文件中读取和数据库连接相关的信息。
配置文件有两种形式:
一种是XML格式的文件:hibernate.cfg.xml
一种是Java属性文件:hibernate.properties
这个实例中我们将使用hibernate.cfg.xml。
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
true
false
net.sf.hibernate.dialect.MySQLDialect
org.gjt.mm.mysql.Driver
jdbc:mysql://localhost:3306/netstore
root
123456
true
gb2312
插入位置在src目录下:
创建O/R对象-关系映射文件
创建持久化的类Customer.java
package entity;import java.io.Serializable;
public class Customers implements Serializable {
private Integer id;
private String name;
private int age;
public Customers() {
}
public int getAge() {
return age; }
public void setAge(int age) {
this.age = age;
}
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;
}}
Get/set 方法的命名必须符合JavaBean的规范,否则Hibernate会报出异常,具体请参照相关资料。
关于Serializable接口:
Hibernate 并不要求持久化类必须实现java.io.Serializable接口,但是对于采用分布式结构的Java应用,当Java对象在不同的进程节点之间传输时,这个对象必须实现这个接口;如果希望对HttpSession中存放的Java对象进行持久化,那么这个Java对象必须实现Serializable接口。
关于不带参数的构造方法:
public Customers() { }
Hibernate要求持久化类必须提供一个不带参数的默认的构造方法,原因请参考相关资料。
创建Mysql数据库
数据库名称:netstroe
Customer表DDL定义如下:CREATE TABLE `customers` ( `Id` bigint(20) NOT NULL default '0', `name` varchar(15) default NULL, `age` int(11) default NULL, PRIMARY KEY (`Id`)) TYPE=MyISAM;
创建对象-关系映射文件
创建对象-关系映射文件:Customers.hbm.xml
代码如下:
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
name="entity.Customers"
table="customers">
name="id"
type="java.lang.Integer"
column="id"
>
name="name"
type="java.lang.String"
column="name"
length="15"
/>
name="age"
type="int"
column="age"
length="11"
/>
引入Hibernate所需的jar包
Hibernate2.jar、hibernate-tools.jar
通过Hibernate API 访问MYSQL数据库
创建业务逻辑类:useHibernate.java
代码如下:
package business;
import entity.Customers;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.cfg.Configuration;
public class useHibernate {
public static SessionFactory sessionFactory;
/** 初始化Hibernate,创建SessionFactory实例 */
public void saveCustomers(Customers customers) throws Exception {
Configuration config = null;
config = new Configuration().configure();
// 创建一个SessionFactory 实例
sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
/* 开始一个事务 */
tx = session.beginTransaction();
session.save(customers);
/* 提交事务 */
tx.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
if (tx != null)
tx.rollback();
throw e;
} finally {
session.close();
}
}}
测试Hibernate配置是否成功
创建Junit测试:testhibernate.java
有关Junit请参考相关资料:
package test;
import business.useHibernate;
import entity.Customers;import junit.framework.TestCase;
Customers customers = new Customers();
customers.setId(new Integer(330121));
customers.setAge(24);
customers.setName("huhpreal");
useHibernate usehibernate = new useHibernate();
try {
usehibernate.saveCustomers(customers);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
查看后台打印信息:
(cfg.Environment 403 ) Hibernate 2.0.3
(cfg.Environment 432 ) hibernate.properties not found
(cfg.Environment 452 ) using CGLIB reflection optimizer
(cfg.Environment 462 ) JVM proxy support: true
(cfg.Configuration 703 ) Configuration resource: /hibernate.cfg.xml
(cfg.Configuration 270 ) Mapping resource: hbm/Customers.hbm.xml
(cfg.Binder 178 ) Mapping class: entity.Customers -> customers
(cfg.Configuration 885 ) Configured SessionFactory: null
(cfg.Configuration 492 ) processing one-to-many association mappings
(cfg.Configuration 503 ) processing foreign key constraints
(impl.SessionFactoryImpl 132 ) building session factory
(dialect.Dialect 83 ) Using dialect: net.sf.hibernate.dialect.MySQLDialect
(connection.DriverManagerConnectionProvider 41 ) Hibernate connection pool size: 20
(connection.DriverManagerConnectionProvider 70 ) using driver: org.gjt.mm.mysql.Driver at URL: jdbc:mysql://localhost:3306/netstore
(connection.DriverManagerConnectionProvider 71 ) connection properties: {useUnicode=true, user=root, password=123456, characterEncoding=gb2312}
(impl.SessionFactoryImpl 162 ) Use outer join fetching: false
(impl.SessionFactoryImpl 185 ) Use scrollable result sets: true
(impl.SessionFactoryImpl 186 ) JDBC 2 max batch size: 15
(impl.SessionFactoryImpl 194 ) echoing all SQL to stdout
(impl.SessionFactoryObjectFactory 82 ) no JDNI name configured
(impl.SessionFactoryImpl 269 ) Query language substitutions: {}
Hibernate 配置使用成功
查看数据库:
插入成功!
发表评论
-
Hibernate配置文件中映射元素详解
2006-12-05 13:40 6171配置文件中映射元素详解 对象关系的映射是用一个XML ... -
另类查询 Hibernate HQL 深度历险
2006-12-03 04:37 8113... -
MyEclipse+struts+Hibernate配置开发
2006-11-11 23:55 3545说明: 这个手册只是为初学者制作的环境配置和快速开发的一些基 ... -
一个hibernate错误
2006-11-11 23:32 6390在设置成assigned时报:ids for this cla ... -
用hibernate常犯错误
2006-11-11 23:23 21751、hql 里用的是 类名 属性名 而不是数据库的表名字段名 ... -
如何用 Hibernate 实现分页查询
2006-11-10 11:30 1849例如: 从第2万条开始取出100条记录 ... -
Java开源项目Hibernate包作用详解
2006-11-10 11:28 1555Hibernate一共包括了23个jar包,令人眼花缭乱。 ... -
利用Eclipse开发Hibernate应用程序
2006-11-10 11:24 2862Eclipse是目前非常流行的开发平台,开放扩展的架构让很 ... -
如何在Eclipse中用Hibernate插件(组图)
2006-11-10 11:19 5573编辑映射文件 Hibernate Synchro ... -
Java学习之hibernate配置要点详谈
2006-11-10 11:09 20461.两种配置文件: A.hibernate.cfg.x ... -
在Struts和Hibernate之间搭起桥梁
2006-11-10 11:09 1475Hibernate和struts是当前市面上几个最流行的开 ... -
方便的HQL: Hibernate查询语言
2006-11-10 11:08 2230HQL: Hibernate查询语言 Hibernate配 ... -
Java开源项目Hibernate快速入门
2006-11-10 11:05 1526其实Hibernate本身是个独立的框架,它不需要任何we ... -
从头到脚跟你解释什么是Hibernate
2006-11-10 11:04 2049Hibernate Hi ...
相关推荐
Hibernate 入门知识
《JavaWeb整合开发完全自学手册》主要介绍Struts、Hibernate、Spring、Eclipse的基础知识,如何整合这4个开源框架进行J2EE开发,如何基于MyEclipseIDE进行开发,J2EE开发的基础和基础环境搭配,Struts、Hibernate、...
Javase+OOAD+XML+JavaWeb+Junit+ant+Struts+Hibernate+Spring,适合新手入门级教程。
《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...
高级java笔试题 Coding-with-Java 项目介绍 项目地址: 项目介绍: Coding-with-Java 是一个面向新手的 Java 从入门到进阶的项目,内容主要涉及 Java SE,Java EE 和 一些企业级框架的学习及使用,致力于帮助编程...
java知识点汇总。包含HTML、java基础、java高级、数据库入门基础知识、过滤器filter、hibernate入门文档、mybatis入门文档、servlet基础知识、spring框架基础知识、struts2入门基础知识。
《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...
I/O基础知识 193 字节流 193 字符流 194 节点流 194 过程流 194 基本字符流类 198 对象串行化 201 实例分析 203 内容总结 211 独立实践 212 第十三章:网络 213 学习目标 213 TCP/IP协议模型 214 基于Java的网络技术...
本章是面向Hibernate初学者的...本章面向Hibernate初学者,但需要Java和SQL知识。它是在Michael Goegl所写的指南的基础上完成的。在这里,我们称第三方库文件是指JDK 1.4和5.0。若使用JDK1.3,你可能需要其它的库文件。
《Java Web开发从初学到精通》开始主要介绍Servlet、JSP、JavaBean、EL、JSTL、JDBC等Web开发基础知识,然后学习Struts、Hibernate、Spring、Ajax、JSF等开源框架,并最终学习如何整合这些开源框架进行J2EE开发,...
本章是面向Hibernate初学者的...本章面向Hibernate初学者,但需要Java和SQL知识。它是在Michael Goegl所写的指南的基础上完成的。在这里,我们称第三方库文件是指JDK 1.4和5.0。若使用JDK1.3,你可能需要其它的库文件。
《Java Web从入门到精通》开始主要介绍Servlet、JSP、JavaBean、EL、JSTL、JDBC等Web开发基础知识,然后学习Struts、Hibernate、Spring、Ajax、JSF等开源框架,并最终学习如何整合这些开源框架进行J2EE开发,如何...
虽然其涉及的技术较为繁杂,但是我们根据软件工程的原则,避开底层繁杂的技术细节,并分离页面设计和后台编程任务,仅着重于应用层的构建,是可以在仅具有Java编程知识和简单HTML标签的基础上,快速开发基于SSH2的...
第一篇为J2EE开发的基础知识,介绍了Web应用的发展阶段、JSP、Servlet。第二篇、第三篇和第四篇分别采用了相似的行文结构,条理清楚地讲解了Struts、Hibernate和Spring三种框架所包含的组件。第五篇则通过Struts+...
第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用...
1,java基础知识 2,javaWeb 3,java主流三大框架面试题
《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。《Struts Hibernate ...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...