学习笔记]快速开发Hibernate
樊欢 java及开源项目爱好者。
Email :heydaymail@hotmail.com
Blog :http://heyay.blogone.net
2005-6-13
引言
关于学习Hibernate的意义,咱不用多说。
下载并安装插件
Hibernate3
下载:http://hibernate.sourceforge.net
JBossIDE1.5M1
下载:http://sourceforge.net/projects/jboss/
HibernateSynchronizer3
下载:http://sourceforge.net/projects/hibernatesynch/
Mysql及JDBC开发包
下载:sql.com/downloads/">http://dev.mysql.com/downloads/
JBossIDE1.5M1 基于Eclipse的IDE开发工具,你可以通过升级你的Eclipse插件进行升级,不过我升级了很多次都不成功,经常升级到一半就毫无动静,白白浪费了很多时间,所以推荐直接下载JBossIDE。
HibernateSynchronizer Eclipse的Hibernate插件。可以生成Hibernate的配置文件和Java代码。不过是基于Hibernate2的。Hibernate2与Hibernate3 的Classs的包由原来的net.sf 移至 org 包内。所以HibernateSynchronizer 生成的Java代码和配置文件会有错误。我通过对HibernateSynchronizer进行反编译,并进行修改,使之适应于Hibernate3 ,目前使用还未发现问题。要使用我修改后的版本,请与我通过Email(heydaymail@hotmail.com 实在是找不到空间可放)联系。
第一个实例
一、前期准备
安装HibernateSynchronizer 插件,并在JBossIDE 透视图里配置好。
启动Mysql,建表Computer:
[table]
CREATE TABLE `computer` (
`id` int(11) NOT NULL auto_increment,
`cpu` varchar(50) default NULL,
`mainboard` varchar(50) default NULL,
`displaycard` varchar(50) default NULL,
`harddisk` varchar(50) default NULL,
`display` varchar(50) default NULL,
`memory` varchar(50) default NULL,
`soundcard` varchar(50) default NULL,
`cdrom` varchar(50) default NULL,
`mouse` varchar(50) default NULL,
`keyboard` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ;
[/table]
二、新建项目
启动JBossIDE ,新建一个DemoHibernate 项目,导入Hibernate及Mysql 开发包。如图:
将Hiberante开发包里的log4j.properties 放至项目根目录下。
三、Hibernate 配置文件
1. 通过JBossIDE Hibernate插件,生成Hibernate.cfg.xml
[table]
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost/hibernate
</property>
<property name="hibernate.connection.driver_class">
org.gjt.mm.mysql.Driver
</property>
</session-factory>
</hibernate-configuration>
[/table]
2. 通过HibernateSynchronizer 生成Mapping文件
3. 将Mapping 文件 加入 Hiberante.cfg.xml文件
[table]
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="my.demo.hibernate">
<class name="Computer"
table="computer"
>
<id
name="Id"
type="int"
column="id"
>
<generator class="increment"/>
</id>
<property
name="Cpu"
column="cpu"
type="string"
not-null="false"
length="50"
/>
<property
name="Mainboard"
column="mainboard"
type="string"
not-null="false"
length="50"
/>
<property
name="Displaycard"
column="displaycard"
type="string"
not-null="false"
length="50"
/>
<property
name="Harddisk"
column="harddisk"
type="string"
not-null="false"
length="50"
/>
<property
name="Display"
column="display"
type="string"
not-null="false"
length="50"
/>
<property
name="Memory"
column="memory"
type="string"
not-null="false"
length="50"
/>
<property
name="Soundcard"
column="soundcard"
type="string"
not-null="false"
length="50"
/>
<property
name="Cdrom"
column="cdrom"
type="string"
not-null="false"
length="50"
/>
<property
name="Mouse"
column="mouse"
type="string"
not-null="false"
length="50"
/>
<property
name="Keyboard"
column="keyboard"
type="string"
not-null="false"
length="50"
/>
</class>
</hibernate-mapping>
[/table]
生成的Computer.hbm,中 Id 字段为自增,需要将generator class=”VM”参数改为increment
将Mapping文件加入到Hibernate.cfg.xml中
可以看到Hibernate.cfg.xml中增加一行
[table]
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost/hibernate
</property>
<property name="hibernate.connection.driver_class">
org.gjt.mm.mysql.Driver
</property>
<mapping resource="conf/Computer.hbm" />
</session-factory>
</hibernate-configuration>
[/table]
四、 生成Java代码
通过HibernateSynchronizer 生成 Hibernate Java代码。
生成的代码结构如图:
五、 编写代码
[table]
package my.demo.hibernate.Sample;
import org.apache.log4j.PropertyConfigurator;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import my.demo.hibernate.Computer;
public class ComputerCreate {
/**
* @param args
*/
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.properties");
Configuration cfg = new Configuration();
cfg.configure();
SessionFactory sf = cfg.buildSessionFactory();
Session session = sf.openSession();
Computer computer = new Computer();
computer.setCpu("on(E) 2.4" );
computer.setDisplay("LCD" );
computer.setDisplaycard("intel" );
computer.setHarddisk("60G" );
computer.setMainboard("inter" );
computer.setMemory("512M" );
computer.setMemory("Agiller" );
computer.setSoundcard("inter" );
computer.setKeyboard("inter" );
computer.setCdrom("cdrom" );
session.save(computer);
session.flush();
try{
session.connection().commit();
session.close();
System.out.println("success!!!!");
}catch(Exception e){
e.printStackTrace();
}
}
}
[/table]
总结
Hibernate 实现O/R Mapping,但配置文件编写非常麻烦,通过JBossIDE 及HibernateSynchronizer可以快速的帮助我们构建代码,大大提高我们的工作效益。
http://www.jdon.com/idea/eclipse-jbossIDE.htm
http://www.jboss.com/products/jbosside/docs
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=122&threadID=27102&messageID=164616
- 树大招风:细数2017年加密货币市场的幺蛾子事件
- 如何解决HP QC(Quality Center)在Windows 7下不能工作的问题
- WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[上篇]
- 5个典型实例启发:什么是数据可视化
- 智能家居“智商”不够,能靠情商来补吗
- 大话MVP
- AngularJS in Action读书笔记1——扫平一揽子专业术语
- MS Enterprise Library 5.0发布!!
- WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]
- 《Enterprise Library深入解析与灵活应用》博文系列汇总
- 使命必达: 深入剖析WCF的可靠会话[概念篇]
- AngularJS in Action读书笔记2——view和controller的那些事儿
- WCF技术剖析之二十一:WCF基本异常处理模式[中篇]
- 小程序上线“小游戏”,正式引爆3.0社交红利
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 原来 8 张图,就可以搞懂「零拷贝」了
- 构造函数没有返回值是怎么赋值的?
- 高频手撕算法合集来了!
- 面试官:兄弟,说说 ArrayList 和 LinkedList 有什么区别
- 开源中文关系抽取框架,来自浙大知识引擎实验室
- EAST+CRNN银行卡号识别,附数据集
- 绝了!搜狗输入法这骚操作!
- Linux 中几个正则表达式的用法
- 产品级垃圾文本分类器
- 突发!Windows XP 源码泄露!
- GitHub 神器:写代码、搜问题,全部都在「终端」完成!
- Redis系列:单机主从模式搭建
- Python 爬取链家成都二手房源信息 asyncio + aiohttp 异步爬虫实战
- 10 个冷门但又非常实用的 Docker 使用技巧!
- 利用 Shell 脚本实现邮件监控 Linux 系统的内存