`

hibernate3.0_小示例

阅读更多

1、导入架包(最小架包,共11个)

  antlr-2.7.5H3.jar  asm.jar  asm-attrs.jar  cglib-2.1.jar  commons-collections-2.1.1.jar  commons-logging-1.0.4.jar  

  dom4j-1.5.2.jar  ehcache-1.1.jar  hibernate3.jar  jta.jar  log4j-1.2.9.jar

2、添加 hibernate.cfg.xml 配置文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.profile">mysql</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/demo</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <mapping resource="user.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

   上述xml创建一个sessionFactory,方言dialect指定了hibernate生成的特定SQL语句,配置此项,应用会参考方言。mapping标签加载映射文件。

3、编写持久化类(User.java)

package com.qh.hibernate.beans;

public class User {
    private int id;
    private String username;
    private String password;
    private String email;
    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;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

    hibernate使用POJOs,和javabean很像。说明hibernate通过get和set方法访问对象。

4、编写映射文件(user.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 package="com.qh.hibernate.beans">
    <class name="User" table="user">
        <id name="id" column="id" type="integer">
            <generator class="native" />
        </id>
        <property name="username" column="username" type="string"></property>
        <property name="password" column="password" type="string"></property>
        <property name="email" column="email" type="string"></property>
    </class>
</hibernate-mapping>

   此映射文件负责持久化类和数据库表之间的映射;id属性是唯一标识符;generator 元素指定标识符的生成策略,我们选择  native,它提供了取决于数据库方言的可移植性。property元素的name属性值为持久化类的属性。

5、编写辅助类 HibernateSessionFactory.java

package com.qh.hibernate.util;

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

/**
 * Configures and provides access to Hibernate sessions, tied to the
 * current thread of execution.  Follows the Thread Local Session
 * pattern, see {@link http://hibernate.org/42.html}.
 */
public class HibernateSessionFactory {

    /** 
     * Location of hibernate.cfg.xml file.
     * NOTICE: Location should be on the classpath as Hibernate uses
     * #resourceAsStream style lookup for its configuration file. That
     * is place the config file in a Java package - the default location
     * is the default Java package.<br><br>
     * Examples: <br>
     * <code>CONFIG_FILE_LOCATION = "/hibernate.conf.xml". 
     * CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml".</code> 
     */
    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";

    /** Holds a single instance of Session */
    @SuppressWarnings("unchecked")
    private static final ThreadLocal threadLocal = new ThreadLocal();

    /** The single instance of hibernate configuration */
    private static final Configuration cfg = new Configuration();

    /** The single instance of hibernate SessionFactory */
    private static org.hibernate.SessionFactory sessionFactory;

    /**
     * Returns the ThreadLocal Session instance.  Lazy initialize
     * the <code>SessionFactory</code> if needed.
     *
     *  @return Session
     *  @throws HibernateException
     */
    @SuppressWarnings("unchecked")
    public static Session currentSession() throws HibernateException {
        Session session = (Session) threadLocal.get();

        if (session == null) {
            if (sessionFactory == null) {
                try {
                    cfg.configure(CONFIG_FILE_LOCATION);
                    sessionFactory = cfg.buildSessionFactory();
                }
                catch (Exception e) {
                    System.err.println("%%%% Error Creating SessionFactory %%%%");
                    e.printStackTrace();
                }
            }
            session = sessionFactory.openSession();
            threadLocal.set(session);
        }

        return session;
    }

    /**
     *  Close the single hibernate session instance.
     *
     *  @throws HibernateException
     */
    @SuppressWarnings("unchecked")
    public static void closeSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
        threadLocal.set(null);

        if (session != null) {
            session.close();
        }
    }

    /**
     * Default constructor.
     */
    private HibernateSessionFactory() {
    }

}

   它是持久化管理器,我们通过它来从数据库中存取User。

6、编写DAO类(UserDao.java)

package com.qh.hibernate.dao;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.qh.hibernate.beans.User;
import com.qh.hibernate.util.HibernateSessionFactory;

public class UserDao {
    public User getUser(String username) throws HibernateException{
        Session session=null;
        Transaction tx=null;
        User user=null;
        try{
            session=HibernateSessionFactory.currentSession();
            tx=session.beginTransaction();
            Query query=session.createQuery("from User where username=?");
            query.setString(0, username.trim());
            user=(User) query.uniqueResult();
            query=null;
            tx.commit();
        }catch(HibernateException e){
            throw e;
        }finally{
            if(tx!=null){
                tx.rollback();
            }
            HibernateSessionFactory.closeSession();
        }
        return user;
    }
}

   Dao层只负责调用hibernate API实现CURD操作。service层面向用户调用DAO层地代码。

7、编写service类(UserService.java)

package com.qh.hibernate.service;

import com.qh.hibernate.beans.User;
import com.qh.hibernate.dao.UserDao;

public class UserService {
    public boolean valid(String username,String password){
        UserDao userDao=new UserDao();
        User user=userDao.getUser("admin");
        if(user.getPassword().equals(password)){
            return true;
        }else{
            return false;
        }
    }
    public static void main(String args[]){
        UserService userService=new UserService();
        System.out.println("验证结果为:"+userService.valid("admin", "123"));
    }
}

   它定义的方法和具体的应用相关。

8、运行UserService.java,控制台输出如下:

INFO - Hibernate 3.0.5
INFO - hibernate.properties not found
INFO - using CGLIB reflection optimizer
INFO - using JDK 1.4 java.sql.Timestamp handling
INFO - configuring from resource: /hibernate.cfg.xml
INFO - Configuration resource: /hibernate.cfg.xml
INFO - Mapping resource: user.hbm.xml
INFO - Mapping class: com.qh.hibernate.beans.User -> user
INFO - Configured SessionFactory: null
INFO - processing extends queue
INFO - processing collection mappings
INFO - processing association property references
INFO - processing foreign key constraints
INFO - Using Hibernate built-in connection pool (not for production use!)
INFO - Hibernate connection pool size: 20
INFO - autocommit mode: false
INFO - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/demo
INFO - connection properties: {user=root, password=****, profile=mysql}
INFO - RDBMS: MySQL, version: 5.5.13
INFO - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.0.8 ( Revision: ${svn.Revision} )
INFO - Using dialect: org.hibernate.dialect.MySQLDialect
INFO - Using default transaction strategy (direct JDBC transactions)
INFO - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
INFO - Automatic flush during beforeCompletion(): disabled
INFO - Automatic session close at end of transaction: disabled
INFO - JDBC batch size: 15
INFO - JDBC batch updates for versioned data: disabled
INFO - Scrollable result sets: enabled
INFO - JDBC3 getGeneratedKeys(): enabled
INFO - Connection release mode: null
INFO - Maximum outer join fetch depth: 2
INFO - Default batch fetch size: 1
INFO - Generate SQL with comments: disabled
INFO - Order SQL updates by primary key: disabled
INFO - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
INFO - Using ASTQueryTranslatorFactory
INFO - Query language substitutions: {}
INFO - Second-level cache: enabled
INFO - Query cache: disabled
INFO - Cache provider: org.hibernate.cache.EhCacheProvider
INFO - Optimize cache for minimal puts: disabled
INFO - Structured second-level cache entries: disabled
INFO - Statistics: disabled
INFO - Deleted entity synthetic identifier rollback: disabled
INFO - Default entity-mode: pojo
INFO - building session factory
WARN - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/D:/My%20Documents/eclipse%20workspace/hibernateTest/WebContent/WEB-INF/lib/ehcache-1.1.jar!/ehcache-failsafe.xml
INFO - Not binding factory to JNDI, no JNDI name configured
INFO - Checking 0 named queries
验证结果为:true

 

注:从cnblogs搬家的。

分享到:
评论

相关推荐

    spring3.0_struts2.1_hibernate3.3_Flex4整合登录

    标题提到的"spring3.0_struts2.1_hibernate3.3_Flex4整合登录"是一个典型的Java Web开发示例,它结合了Spring、Struts2、Hibernate和Flex这四款强大的框架,以实现一个登录功能。下面将详细介绍这些技术及其整合的...

    Struts1.3_Spring3.0_hibernate3.3示例

    Struts1.3_Spring3.0_Hibernate3.3示例是一个综合性的项目,它展示了如何在Java Web开发中整合三个流行的技术框架:Struts1.3、Spring3.0和Hibernate3.3。这些框架分别负责MVC(Model-View-Controller)架构、依赖...

    lib-Hibernate3.0 jar包

    在Java EE应用中,Hibernate3.0版本是当时的一个重要里程碑,引入了许多新特性并提升了性能。 ### 1. Hibernate 概述 Hibernate 允许开发人员通过Java对象来操作数据库,而无需编写SQL语句。它将Java类与数据库表...

    Hibernate3.0完整中文版教程.pdf

    ### Hibernate 3.0 完整中文版教程知识点解析 #### 一、概述 Hibernate 是一个开放源代码的 Java 持久层框架,它极大地简化了数据持久化的编程工作,使得 Java 开发人员可以使用面向对象的方式进行数据库操作。...

    struts1.2+spring2.3+hibernate3.0

    Struts1.2、Spring2.3 和 Hibernate3.0 是经典的Java企业级开发框架组合,被称为SSH(Struts-Spring-Hibernate)集成框架。这个组合在2000年代末到2010年初非常流行,它们各自解决了不同的问题,并通过相互配合,...

    struts2.0 spring2.0 hibernate3.0整合开发快速入门-3

    ### Struts2.0、Spring2.0与Hibernate3.0整合开发快速入门知识点解析 #### 一、Struts2.0与Hibernate3.0整合基础 **知识点1:Struts2.0简介** - **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于...

    精通hibernate3.0--java数据库持久层开发实践(付京周)2

    根据提供的文件信息,“精通Hibernate3.0—Java数据库持久层开发实践(付京周)”这一书籍主要聚焦于使用Hibernate框架进行Java应用的数据库持久层开发。本书旨在帮助读者深入理解并掌握Hibernate的核心概念和技术...

    Spring3.0_MVC_中文教程

    本教程分为多个部分,详细介绍了从Spring3.0 MVC的基本概念到创建应用程序、表单处理、Tiles支持、国际化及本地化,以及如何结合Spring3.0 MVC和Hibernate 3等技术。特别值得一提的是,它展示了如何在Eclipse环境中...

    EJB3.0_JPA_教程

    【JPA概述】 Java Persistence API (JPA) 是Java Enterprise Edition (Java EE) 5.0 标准的...目前,多个知名ORM框架,如Hibernate、TopLink和OpenJPA,都已经提供了对JPA的支持,进一步增强了JPA在Java开发中的地位。

    最新struts2.2_hibernate3.6_spring3.0整合

    这个压缩包文件中的"Struts2.2_Hibernate3.6_Spring3.0"很可能包含了示例代码、配置文件以及详细的整合教程,对于初学者和进阶开发者来说都是极好的参考资料。通过学习和实践,你可以掌握现代Java Web开发的关键技术...

    Hibernate3.0 api 帮助文档

    Hibernate3.0 API 帮助文档是针对Java开发者的重要参考资料,它包含了全面的API接口说明和使用示例,帮助开发者高效地利用Hibernate框架进行对象关系映射(ORM)。Hibernate是一个开源的Java库,用于简化数据库操作...

    struct1.2+ hibernate3.0+spring2.0 例子

    在IT行业中,`Struts1.2`、`Hibernate3.0` 和 `Spring2.0` 是三个非常重要的框架,它们分别代表了MVC(Model-View-Controller)架构、对象关系映射(ORM)以及依赖注入和企业级应用框架的基石。这个压缩包文件的标题...

    hibernate3.0和spring结合(一看就懂)

    【标题】"hibernate3.0和spring结合(一看就懂)"揭示了这个示例项目是关于如何将Hibernate 3.0版本与Spring框架整合的教程。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发者用面向对象的方式处理...

    hibernate3.0+c3p0 重新自动连接

    本篇文章将深入探讨`Hibernate3.0`与`c3p0`的整合,以及它们如何实现自动重连机制。 `Hibernate3.0`是一个强大的对象关系映射(ORM)框架,它使得开发者可以使用面向对象的方式来操作数据库,而无需关注底层的SQL...

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).rar

    OA办公自动化管理系统是一个基于Struts1.2、Hibernate3.0、Spring2和DWR技术栈的计算机专业JSP源码资料包。这个资料包为开发者提供了一个全面的、易于使用的、高效的办公自动化解决方案,旨在帮助企业实现信息化建设...

    Spring2.5+Hibernate3.0+Xfire1.2.6 实例代码

    《Spring2.5+Hibernate3.0+Xfire1.2.6集成实践详解》 在软件开发领域,Spring、Hibernate和Xfire是三个至关重要的框架,它们分别在不同的层面上为开发者提供了强大的支持。本实例代码集合了Spring 2.5、Hibernate ...

    从零开始创建基于 struts1.2 + Hibernate3.0 的 Web 工程.doc

    《从零开始创建基于 Struts1.2 + Hibernate3.0 的 Web 工程》 在Web开发领域,Struts1.2 和 Hibernate3.0 是两个非常经典的框架,它们分别用于控制层和持久化层的管理。Struts1.2 提供了MVC(模型-视图-控制器)...

    spring3.0+hibernate3.0+struts2

    标题 "spring3.0+hibernate3.0+struts2" 提示我们讨论的是一个集成使用Spring 3.0、Hibernate 3.0和Struts 2的经典Java Web开发框架,通常被称为SSH(Spring、Struts和Hibernate)。这个组合在过去的几年里非常流行...

Global site tag (gtag.js) - Google Analytics