论坛首页 入门技术论坛

Hibernate入门

浏览 2931 次
锁定老帖子 主题:Hibernate入门
该帖已经被评为新手帖
作者 正文
   发表时间:2009-10-28   最后修改:2009-10-29

      Hibernate对JDBC API进行了封装,负责持久化Java对象;在软件架构的分层中位于持久层,封装了访问数据的细节,使业务层更能专注业务的处理;它是一种ORM映射工具,用于建立面向对象的域模型和关系数据模型之间的映射。

 

      一、ORM简介

      ORM(对象-关系映射)是Object-Relation Mapping的简称,指的是在单个组件中负责所有实体域对象的持久化,封装数据访问细节。ORM作为一个中间件,很好的解决了面向对象和面向关系之间的天然阻抗。ORM采用元数据来描述对象-关系映射,通常采用XML格式。

 

      二、Hibernate API简介

      Hibernate对JDBC做了轻量级的封装,故Java应用程序即可通过Hibernate的API来访问数据库也可以直接使用JDBC来访问数据库。

      Hibernate API中的核心接口层次架构关系如图:



       其中很重要的几个:

      1.Configuration接口:配置Hibernate,创建SessionFactory对象

      2.SessionFactory接口:初始化Hibernate,充当数据存储源的代理,创建Session对象

      3.Session接口:负责对对象的增、删、改、查操作

      4.Transaction接口:管理事务

      5.Query和Criteria接口:主要用于数绝库的查询操作

 

      三、使用Hibernate

      在Java应用中使用Hibernate包含以下几个步骤:

      1.创建Hibernate的配置文件

      2.创建持久化类

      3.创建对象-关系映射文件

      4.通过Hibernate API编写访问数据库的代码

      举例说明:

      现有数据库表user:

mysql> select * from t_user;
+----+------+-----+
| u_id | u_name | u_age |
+----+------+-----+
|  1 | test |  18 |
+----+------+-----+
1 row in set

      现在Java中使用Hibernate向t_user增加一条记录u_name=hibernate,u_age=20,u_id为设置为自动增长。

    1.创建Hibernate的配置文件hibernate.cfg.xml:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>
    <session-factory>
        <property name="connection.username">mysql</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/user</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="myeclipse.connection.profile">MySQL</property>
        <property name="connection.password">mysql</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    </session-factory>
</hibernate-configuration>

    2.创建持久化类UserPO:

package com.china.po;

import java.io.Serializable;

public class UserPO implements Serializable{

	private int id;

	private String name;

	private int age;
	
	public UserPO(){
		
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}

    3.创建对象-关系映射文件UserPO.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>
	<!-- name和table表示PO对象和数据库表的对应关系 -->
	<class name="com.china.po.UserPO" table="t_user">
		<!-- 标识主键 -->
		<id name="id" column="u_id" type="int">
			<!-- 设置u_id为自动增长 -->
			<generator class="increment"></generator>
		</id>
		<!-- 设置对象普通属性和数据库表字段的对应关系 -->
		<property name="name" column="u_name" type="java.lang.String"></property>
		<property name="age" column="u_age" type="int"></property>
	</class>
</hibernate-mapping>

    4.在hibernate.cfg.xml中配置UserPO.hbm.xml,即在session-factory中添加一个子元素:

<mapping resource="com/lovo/po/PetPO.hbm.xml"/>

    5.使用Hibernate API来访问数据库:

package com.china.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.china.po.UserPO;
import com.china.util.HibernateSessionFactory;

public class UserDAO {

	public void addUser(UserPO user){
		//创建session对象
		Session session = HibernateSessionFactory.getSession();
		//开启事务
		Transaction trans = session.beginTransaction();
		//执行保存user操作
		session.save(user);
		//提交事务
		trans.commit();
		//关闭连接
		session.close();
	}
}

    6.编写测试mian方法:

package com.china.test;

import com.china.dao.UserDAO;
import com.china.po.UserPO;

public class Test {

	public static void main(String[] args) {
		UserPO user = new UserPO();
		user.setName("hibernate");
		user.setAge(20);
		
		UserDAO dao = new UserDAO();
		dao.addUser(user);
	}
}

    再次查看表t_user,操作成功

mysql> select * from t_user;
+------+-----------+-------+
| u_id | u_name    | u_age |
+------+-----------+-------+
|    1 | test      |    18 |
|    2 | hibernate |    20 |
+------+-----------+-------+
2 rows in set
 

    汗!不小心发到坛子来了,也没法修改,纯属新手读书笔记,各位大虾不要见怪。

 

 

  • 大小: 16.2 KB
   发表时间:2009-10-29  
我觉得写的很好
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics