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搬家的。
- hibernateTest.rar (3.4 MB)
- 下载次数: 7
相关推荐
标题提到的"spring3.0_struts2.1_hibernate3.3_Flex4整合登录"是一个典型的Java Web开发示例,它结合了Spring、Struts2、Hibernate和Flex这四款强大的框架,以实现一个登录功能。下面将详细介绍这些技术及其整合的...
Struts1.3_Spring3.0_Hibernate3.3示例是一个综合性的项目,它展示了如何在Java Web开发中整合三个流行的技术框架:Struts1.3、Spring3.0和Hibernate3.3。这些框架分别负责MVC(Model-View-Controller)架构、依赖...
在Java EE应用中,Hibernate3.0版本是当时的一个重要里程碑,引入了许多新特性并提升了性能。 ### 1. Hibernate 概述 Hibernate 允许开发人员通过Java对象来操作数据库,而无需编写SQL语句。它将Java类与数据库表...
### Hibernate 3.0 完整中文版教程知识点解析 #### 一、概述 Hibernate 是一个开放源代码的 Java 持久层框架,它极大地简化了数据持久化的编程工作,使得 Java 开发人员可以使用面向对象的方式进行数据库操作。...
Struts1.2、Spring2.3 和 Hibernate3.0 是经典的Java企业级开发框架组合,被称为SSH(Struts-Spring-Hibernate)集成框架。这个组合在2000年代末到2010年初非常流行,它们各自解决了不同的问题,并通过相互配合,...
### Struts2.0、Spring2.0与Hibernate3.0整合开发快速入门知识点解析 #### 一、Struts2.0与Hibernate3.0整合基础 **知识点1:Struts2.0简介** - **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于...
根据提供的文件信息,“精通Hibernate3.0—Java数据库持久层开发实践(付京周)”这一书籍主要聚焦于使用Hibernate框架进行Java应用的数据库持久层开发。本书旨在帮助读者深入理解并掌握Hibernate的核心概念和技术...
本教程分为多个部分,详细介绍了从Spring3.0 MVC的基本概念到创建应用程序、表单处理、Tiles支持、国际化及本地化,以及如何结合Spring3.0 MVC和Hibernate 3等技术。特别值得一提的是,它展示了如何在Eclipse环境中...
【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"很可能包含了示例代码、配置文件以及详细的整合教程,对于初学者和进阶开发者来说都是极好的参考资料。通过学习和实践,你可以掌握现代Java Web开发的关键技术...
Hibernate3.0 API 帮助文档是针对Java开发者的重要参考资料,它包含了全面的API接口说明和使用示例,帮助开发者高效地利用Hibernate框架进行对象关系映射(ORM)。Hibernate是一个开源的Java库,用于简化数据库操作...
在IT行业中,`Struts1.2`、`Hibernate3.0` 和 `Spring2.0` 是三个非常重要的框架,它们分别代表了MVC(Model-View-Controller)架构、对象关系映射(ORM)以及依赖注入和企业级应用框架的基石。这个压缩包文件的标题...
【标题】"hibernate3.0和spring结合(一看就懂)"揭示了这个示例项目是关于如何将Hibernate 3.0版本与Spring框架整合的教程。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发者用面向对象的方式处理...
本篇文章将深入探讨`Hibernate3.0`与`c3p0`的整合,以及它们如何实现自动重连机制。 `Hibernate3.0`是一个强大的对象关系映射(ORM)框架,它使得开发者可以使用面向对象的方式来操作数据库,而无需关注底层的SQL...
OA办公自动化管理系统是一个基于Struts1.2、Hibernate3.0、Spring2和DWR技术栈的计算机专业JSP源码资料包。这个资料包为开发者提供了一个全面的、易于使用的、高效的办公自动化解决方案,旨在帮助企业实现信息化建设...
《Spring2.5+Hibernate3.0+Xfire1.2.6集成实践详解》 在软件开发领域,Spring、Hibernate和Xfire是三个至关重要的框架,它们分别在不同的层面上为开发者提供了强大的支持。本实例代码集合了Spring 2.5、Hibernate ...
《从零开始创建基于 Struts1.2 + Hibernate3.0 的 Web 工程》 在Web开发领域,Struts1.2 和 Hibernate3.0 是两个非常经典的框架,它们分别用于控制层和持久化层的管理。Struts1.2 提供了MVC(模型-视图-控制器)...
标题 "spring3.0+hibernate3.0+struts2" 提示我们讨论的是一个集成使用Spring 3.0、Hibernate 3.0和Struts 2的经典Java Web开发框架,通常被称为SSH(Spring、Struts和Hibernate)。这个组合在过去的几年里非常流行...