`
hhr_michael
  • 浏览: 72417 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

struts2+hibernate3+spring2读书笔记9(Hibernate入门)

阅读更多

                           第10章 Hibernate入门
     本章导读语
           Hibernate是目前很流行的一个ORM框架,它将SQL操作优雅地包装成对象化的操作

一. 搭建Hibernate3开发环境

(1) 建立工程
(2) 将Hibernate加入到工程(实现一个简单的Hibernate查询所需要的jar包包括:antlr-2.7.6.jar、asm.jar、cglib-2.1.3.jar、commons-collections-2.1.1.jar、commons-logging-1.0.4.jar、dom4j-1.6.1.jar、hibernate3.jar、jta.jar、log4j-12.11.jar和mysql-connector-java-5.0.4-ben.jar)

二. 用Hibernate实现用户信息查询

1. 创建数据库

首先创建一个数据库test,并在该数据库中创建用户信息表user,脚本如下:

   
CREATE DATABASE test;
USE test;
CREATE TABLE user (
id int(11) not null auto_increment,
username varchar(100) DEFAULT Null,
password varchar(100) DEFAULT Null,
PRIMARY KEY(id)
)ENGINE=InnoDB DEFAULT CHARSET=gb2312;
INSERT INTO user (id, username, password)VALUES(1,'amigo','123');
INSERT INTO user (id, username, password)VALUES(2,'hhr','123456789');


2.创建Hibernate配置文件Hibernate.cfg.xml(该文件是中要放在src目录下的)

   <?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">

<hibernate-configuration>
    <session-factory> 
		<!-- properties -->
		<property name="connection.url">jdbc:mysql://localhost:3306/test</property> 
		<property name="connection.username">root</property> 
		<property name="connection.password"></property>
		<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
		 
		<!-- mapping files -->  
		<mapping resource="amigo/hibernate/model/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

3.创建包:amigo.hibernate.model

4.编写Hibernate映射文件User.hbm.xml(Hibernate之所以能够智能判断实体类和数据表之间的对应关系不,就是因为有XML映射文件,在amigo.hibernate.model包中建立,该文件要和POJO文件要放在同一目录下)

  
 <?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 package="amigo.hibernate.model">
<class name="User" table="user">
	<id name="id" column="id" type="java.lang.Integer">
		<generator class="native"/>
	</id>
	
	<property name="username" column="username" type="java.lang.String" not-null="true"/>
	<property name="password" column="password" type="java.lang.String" not-null="true"/>
</class>
</hibernate-mapping>
5.编写POJO文件User.java(每一个对应的表都有一个映射文件(.hbm.xml文件)和一个POJO文件,User.java为Hibernate进行数据的增、删、改、查操作对象,在amigo.hibernate.model包中建立。)

package amigo.hibernate.model;

import java.io.Serializable;

/**
 * 用户的pojo对象.
 * */
public class User implements Serializable {
	private static final long serialVersionUID=1L;
	
	/**用户id.*/
	private Integer id;
	/**用户名.*/
	private String username;
	/**密码.*/
	private String password;
	public Integer getId() {
		return id;
	}
	public void setId(Integer 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;
	}
	public static long getSerialVersionUID() {
		return serialVersionUID;
	}
}

6.编写Hibernate工具类HibernateUtil.java
   类HibernateUtil.java文件用于获得Session,该类包括获得当前的session的方法和获得SessionFactory的方法。

package amigo.hibernate.model;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 * Hibernate的工具类
 * */
public class HibernateUtil {
	private static SessionFactory sessionFactory;
	
	/**持有一个单态的Session实例.*/
	private static final ThreadLocal threadLocal=new ThreadLocal();
	
	/**持有一个单态的configuration实例.*/
	private static final Configuration cfg=new Configuration();
	
	private static String CONFIG_FILE_LOCATION="/hibernate.cfg.xml";
	
	static{
		try{
			sessionFactory = new Configuration().configure(CONFIG_FILE_LOCATION).buildSessionFactory();
			
		}catch(Throwable ex){
			//Make sure you log the exception,as it might be swallowed
			System.err.print("Initial SessionFactory creation failed."+ex);
			throw new ExceptionInInitializerError(ex);
			
		}	
		
	}
	public static SessionFactory getSessionFactory(){
		return sessionFactory;
		
	}
	
	/**
	 * 获得当前的Session实例
	 * */
	public static Session currentSession() throws HibernateException{
		Session session = (Session)threadLocal.get();
		if(session==null||session.isOpen()==false){
			if(sessionFactory==null){
				try{
					cfg.configure(CONFIG_FILE_LOCATION);
					sessionFactory=cfg.buildSessionFactory();
				}
				catch(Exception e){
					System.err.print("%%%%Error Creating SessionFactory%%%%"+e.getMessage());
					
				}	
			}
			session=sessionFactory.openSession();
			threadLocal.set(session);
		}
		return session;
	}
	
}

7.编写测试类:HibernateTest.java

 
 package amigo.hibernate.model;

import java.util.List;

import org.hibernate.Query;

import org.hibernate.Session;

import amigo.hibernate.model.User;

/**
 * Hibernate简要测试,
 * 获得用户信息表(user)中的用户信息,并打印出来
 * */
public class HibernateTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		Session session = HibernateUtil.currentSession();
		session.beginTransaction();
		//创建查询对象
		Query query = session.createQuery("from User");
		//获得用户列表
		List<User> userList = query.list();
		User user = null;
		if(userList!=null&&userList.size()>0){
			for(int i=0;i<userList.size();i++){
				user=(User)userList.get(i);
				System.out.println("i="+i+",id="+user.getId()+",username="+user.getUsername()+",password="+user.getPassword());
				
			}
			
		}
		session.getTransaction().commit();//提交
	}

}


本章小结:

     搭建Hibernate的开发环境需要两个步骤:第一步是建立起一个动态工程,第二步是要在工程中加入所要用到的jar组件包,实现一个简单的Hibernate查询所需要的jar包包括:antlr-2.7.6.jar、asm.jar、cglib-2.1.3.jar、commons-collections-2.1.1.jar、commons-logging-1.0.4.jar、dom4j-1.6.1.jar、hibernate3.jar、jta.jar、log4j-12.11.jar和mysql-connector-java-5.0.4-ben.jar
     要实现用户信息的查询功能,需要5个步骤,分别为:
1) 编写Hibernate的核心配置文件Hibernate.cfg.xml,该文件中配置数据库连接等信息。
2) 编写user表的映射文件User.hbm.xml文件及其对应的POJO文件User.java。
3) 编写Hibernate的工具类HibernateUtil.java文件,该类中包括了获得Session等的方法。
4) 编写实现Hibernate查询的测试的测试类HibernateTest.java文件。
5) 通过使用Hibernate使得Java开发人员不必使用烦琐的SQL语句来完成数据库的操作,而只需要简便地使用面向对象编程思想来对数据库进行操作,减轻了开发人员工作。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics