第十九天 慵懒的投射在JDBC上的暖阳 —Hibernate的使用(一)
来源:互联网 发布:steam 汉化 知乎 编辑:程序博客网 时间:2024/04/28 16:12
5月29日,多云。“谢却海棠飞尽絮,困人天气日初长”。
大多数架构,都是不同乏味平淡概念的组合碰撞产生的裂变性奇观。若以人情世故来看乏味概念的相逢,有的是让人叫绝的天作之合,有的是叫人动容的邂逅偶遇,有的是令人击节的相见恨晚。当Java类遇到了数据库表,产生了Hibernate,极大地缩短了处理SQL和JDBC上的开发时间。
下面,给出hibernate 3.6.10和hibernate 4.3.5两个版本的入门实例,看看这个蛰伏在数据库背后的庐山真面目。
为什么用这两个版本,hibernate 3.6.10是目前hibernate 3.X的最后版本,hibernate 4.3.5是目前最新版本。
1、下载Hibernate
hibernate 3.6.10的下载地址:http://sourceforge.net/projects/hibernate/files/hibernate3/
hibernate 4.3.5的下载地址:http://sourceforge.net/projects/hibernate/files/hibernate4/4.3.5.Final/hibernate-release-4.3.5.Final.zip/download
MySQL的jdbc驱动jar包。下载地址:http://dev.mysql.com/downloads/connector/j/5.0.html
2、建立Java Project( 使用hibernate 3.6.10)
使用Eclipse新建一个名为HibernateApp01的工程,把下载的hibernate-distribution-3.6.10.Final-dist.zip解压。Add to Build Path—将如下依赖的jar包加入工程依赖中,包括:
hibernate-distribution-3.6.10.Final\hibernate3.jar
hibernate-distribution-3.6.10.Final\lib\jpa\hibernate-jpa-2.0-api-1.0.1.Final
hibernate-distribution-3.6.10.Final\lib\required下的所有jar包
mysql-connector-java-5.0.8\mysql-connector-java-5.0.8-bin.jar
一股脑的加入这么多依赖包,是为了避免编译一下子出太多错误,影响情绪
3、创建MySQL数据库
创建名为hib的数据库,并用如下SQL创建userinfo表;
/*MySQL Data TransferSource Host: 127.0.0.1Source Database: hibTarget Host: 127.0.0.1Target Database: hibDate: 2014/5/30 22:39:02*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for userinfo-- ----------------------------CREATE TABLE `userinfo` ( `id` int(11) NOT NULL auto_increment, `username` varchar(100) default '', `password` varchar(100) default '', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;-- ------------------------------ Records -- ----------------------------4、创建POJO类UserInfo
package edu.eurasia.hib;public class UserInfo {private int id;private String username;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}5、编写对象关系映射文件UserInfo.hbm.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><!--类和表之间的关联--> <class name="edu.eurasia.hib.UserInfo" table="userinfo"> <!--类对象的主键和表的主键的关联--> <id name="id" type="integer"> <column name="id" /> <!--指明主键的自增长类型--> <generator class="identity"/> </id> <!--以下为普通字段的关联--> <property name="username" type="string"> <column name="username" length="100" /> </property> <property name="password" type="string"> <column name="password" length="100" /> </property> </class> </hibernate-mapping>
该文件存放的是对象关系映射的逻辑,包括表和字段的对应关系。当操作对象时,该文件通过Java反射机制产生的方法,会把对象的方法转换为关系的方法。
6、添加hibernate.cfg.xml配置文件
<?xml version='1.0' encoding='gb2312'?><!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.driver_class">com.mysql.jdbc.Driver</property><!--配置数据库网络连接的url--><property name="hibernate.connection.url">jdbc:mysql://localhost/hib</property><!--配置数据库网络连接的用户名,默认一般为root--><property name="hibernate.connection.username">root</property><!--配置数据库网络连接的密码--><property name="hibernate.connection.password">root</property><!--配置数据库网络连接池的大小--><property name="hibernate.connection.pool.size">20</property><!--后台是否显示sql,开发时为true,运行时为false--><property name="hibernate.show_sql">true</property><!-- 设置JDBC的隔离级别--><property name="hibernate.connection.isolation">2</property><property name="hibernate.format_sql">true</property><property name="jdbc.fetch_size">50</property><property name="jdbc.batch_size">25</property><property name="jdbc.use_scrollable_resultset">false</property><property name="connection.useUnicode">true</property><!--编码方式,最好是utf-8,用gb2312有的字符不全--><property name="connection.characterEncoding">UTF-8</property><!--数据库方言,每个数据库都有方言,hibernate已经为大多数数据库指明了方言--><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><mapping resource="edu/eurasia/hib/UserInfo.hbm.xml" /></session-factory></hibernate-configuration>
该文件为核心文件,初学者尽量不要改变其名称。
7、建立测试类HibTest.java
package edu.eurasia.hib;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;public class HibTest {public static void main(String[] args) {SessionFactory sessions = new Configuration().configure().buildSessionFactory();Session session = sessions.openSession();Transaction tx = null;try {// 开始事务tx = session.beginTransaction();// 给对象设定值UserInfo u = new UserInfo();u.setUsername("张大千");u.setPassword("123456");System.out.println("开始插入数据到数据库……");// 保存数据到数据库session.save(u);// 结束事务tx.commit();tx = null;System.out.println("恭喜你,第一个hibernate程序运行成功!");} catch (HibernateException e) {e.printStackTrace();if (tx != null) {tx.rollback();}} finally {session.close();}}}
8、运行结果
查看数据库userinfo表中已经增加一条记录。
工程结构图如下:
小提示:
xml文件自动提示功能,如果UserInfo.hbm.xml和hibernate.cfg.xml不能自动提示时,按如下操作:
(1)打开方式不正确,在xml文件上点右键-->openWith-->选择XML Editor就可以了。
(2)将项目中用到的 hibernate3.jar 解压缩,找到解压缩后的 org 文件下的 hibernate 文件下的 hibernate-mapping-3.0.dtd 文件。
(3)eclipse -> Window -> Preferences -> XML -> XML Catalog,选择 XML Catalog Entries 的 Add... 按钮,在弹出的 Add XML Catalog Entry 对话框里,Location 里选择第二步里得到的 hibernate-mapping-3.0.dtd,Key Type 选择 URI,Key 里输入XML文件里得到的http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd。OK。hibernate-configuration-3.0.dtd同理。
- 第十九天 慵懒的投射在JDBC上的暖阳 —Hibernate的使用(一)
- 第二十天 慵懒的投射在JDBC上的暖阳 —Hibernate的使用(二)
- 第二十一天 慵懒的投射在JDBC上的暖阳 —Hibernate的使用(三)
- 第二十五天 慵懒的投射在JDBC上的暖阳 —Hibernate的使用(四)
- 第三十一天 慵懒的投射在JDBC上的暖阳 —Hibernate的使用(四)
- 第二十二天 慵懒的投射在JDBC上的暖阳 —性能良好的半自动mybatis
- 慵懒的午后
- 我的android(第十九天)
- 学习python的第十九天
- 写给过去慵懒的自己
- sqlite-jdbc在eclipse上的使用
- 通向架构师的道路(第十九天)使用maven构建Spring工程
- 通向架构师的道路(第十九天)使用maven构建Spring工程
- 通向架构师的道路(第十九天)使用maven构建Spring工程
- 通向架构师的道路(第十九天)使用maven构建Spring工程
- 通向架构师的道路(第十九天)使用maven构建Spring工程
- 通向架构师的道路(第十九天)使用maven构建Spring工程
- 通向架构师的道路(第十九天)使用maven构建Spring工程
- 分享中国天气网的接口
- 新建ArcGIS Project for Android项目失败解决方法
- mysql安装时的粗心错误:last error unable to update security settings. access denied for user 'root' @ 'localh
- 【leetcode】 Longest Substring Without Repeating Characters
- C语言--关于函数的练习题
- 第十九天 慵懒的投射在JDBC上的暖阳 —Hibernate的使用(一)
- 性能数据3
- itunes 无法完成您的iTunes 请求问题
- 组合模式学习笔记
- git提交代码的常用操作
- 马程序员学习笔记——红黑树解析一
- shell中单中括号与双中括号的区别
- 黑马程序员_Java中IO与装饰者设计模式
- 已退役