第十九天 慵懒的投射在JDBC上的暖阳 —Hibernate的使用(一)

        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 Transfer
Source Host: 127.0.0.1
Source Database: hib
Target Host: 127.0.0.1
Target Database: hib
Date: 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.xmlhibernate.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同理。

          



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值