第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语句来完成数据库的操作,而只需要简便地使用面向对象编程思想来对数据库进行操作,减轻了开发人员工作。
分享到:
相关推荐
"使用Struts + Spring + Hibernate完成用户登陆笔记" 在本文中,我们将结合Struts、Spring和Hibernate三种技术来完成用户登陆系统的实现。下面是相关的知识点总结: 一、Struts框架简介 * Struts是一个基于MVC...
"Struts2 + Spring + Hibernate + DWR"是一个常见的Java Web开发框架组合,用于构建动态、数据驱动的Web应用程序。这个项目部署笔记将深入探讨这四个组件的核心功能以及它们如何协同工作。 首先,Struts2是一个基于...
### Spring+Hibernate+Struts2+MyBatis 整合笔记 #### 一、SSM框架简介及整合意义 SSM框架是指Spring、SpringMVC和MyBatis三个开源框架的整合,通常用于快速开发Java Web应用。本篇笔记主要介绍如何将Spring、...
3. **集成其他框架**:Spring与Hibernate、Struts2等框架无缝集成,提供统一的入口点和调度机制。 **Hibernate**是一个强大的对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库。在SSH项目中,...
内涵数据库设计模型 和数据库设计代码! 图书管理系统: 数据库使用的mysql 里面的发送e-mail我用的是一个我申请的邮箱在测试 可以用自己的! 代码功能基本都有注释.... 才学完s2sh的入门笔记吧! 供学习使用........
Struts2、Hibernate和Spring是Java开发中三大主流框架,它们各自解决了Web开发中的不同问题,结合使用可以构建出高效、可维护的大型企业级应用。以下是对这三大框架及其结合使用的知识点详解。 **Struts2框架** ...
3. "MyEclipse下struts2、spring、hibernate整合 - 技术频道 IT168.mht":这篇文档可能详细描述了在MyEclipse中整合这三大框架的具体步骤,包括添加库、配置web.xml和struts.xml、Spring的bean配置以及Hibernate的...
spring+hibernate+jpa+struts1+struts2+springmvc+jquery+freemaker 学习笔记 Compass将lucene、Spring、Hibernate三者结合
SSH是Java开发中广泛使用的三大框架——Struts2、Hibernate和Spring的缩写。这三大框架结合使用,能够构建高效、灵活的企业级Web应用程序。现在,让我们深入探讨这些框架的知识点。 **Struts2笔记** Struts2是MVC...
轻量级 J2EE 企业应用实战 -- Struts+Spring+Hibernate 整合开发笔记 本资源为轻量级 J2EE 企业应用实战开发笔记,涵盖 Struts、Spring 和 Hibernate 三大框架的整合开发实践。笔记从 JDK 安装和配置环境变量开始,...
标题中的"jsp+tomcat+Struts2+Spring+Hibernate应用实例"揭示了一个基于Java Web技术的项目构建,其中涉及到的主要技术栈包括JSP、Tomcat服务器、Struts2、Spring和Hibernate。这个实例可能是一个典型的MVC(Model-...
Struts+Spring+Hibernate整合笔记
Struts、Hibernate和Spring是Java开发中非常重要的三个开源框架,它们各自负责应用程序的不同层面,共同构建了企业级应用的“铁三角”。这篇读书笔记将深入探讨这三个框架的核心概念、功能以及它们之间的协同工作...
Struts 2 + Spring 2.0 + Hibernate 3.0整合笔记
1 开发环境 d6 up2,sqlserver2000, win2000 server 1024*768(笔记本电脑) c/s 2 第三方控件,ehlib2.1,fastreport2.45,xpmenu,snccurrency ,(有可能用到express bar 但是可以在umain删除引用单元,因为没用到)...
### SSH(Struts1.0+Spring+Hibernate)框架集成笔记 #### 一、概述 SSH框架集成,即Struts1.0 + Spring + Hibernate框架的整合应用,是Java Web开发中较为复杂的集成模式之一。它集合了MVC设计模式(通过Struts...
这个“struts+spring+hibernate学习笔记”应该涵盖了这三个框架的基础知识以及如何将它们整合使用的详细教程。 Struts是一个基于MVC(Model-View-Controller)设计模式的开源框架,主要用于控制Web应用的流程。它...
Struts+Spring+Hibernate 整合是Java Web开发中一种常见的技术栈,也被称为SSH框架。这个整合的主要目的是为了在企业级应用中实现MVC(Model-View-Controller)架构,提供更好的数据持久化、业务逻辑管理和前端展示...
Struts 2、Spring 2.0 和 Hibernate 3.0 是Java开发中经典的MVC框架组合,它们各自负责不同的职责,共同构建了一个强大的企业级应用架构。在本笔记中,我们将深入探讨这三个框架的整合过程及其核心概念。 **Struts ...
读书笔记:基于struts+hibernate+spring+easyui+mysql的网上商城项目实战源码