从读Hibernate的手册开始了学习Hibernate的历程。
《与猫同乐》----乐的有些尴尬,因为在99%时,测试用了普通Java类,长时间滞留不前,把我的猫忘在门外了
1、配置数据源。
在Tomcat5中,修改conf\tomcat-users.xml文件,加入<user roles="admin" password="admin" username="admin">。启动Tomcat,进入管理页面,添加数据源,最终有如下信息加入项目的配置文件中:</user>
<resource type="javax.sql.DataSource" name="jdbc/quickstart">
<resourceparams name="jdbc/quickstart">
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value>secret</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/test</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>quickstart</value>
</parameter>
</resourceparams></resource>
2、添加Hibernate库
把所需的库加入类路径中,或是项目Lib中
3、编写hibernate.cfg.xml文件,置于项目编译后的根目录下(在Eclipse或其他IDE中,放在源文件根目录下即可),内容类似下示:
<hibernate-configuration></hibernate-configuration>
<session-factory></session-factory>
<property name="connection.datasource">java:comp/env/jdbc/quickstart</property>
<property name="show_sql">false</property>
<property name="dialect">net.sf.hibernate.dialect.PostgreSQLDialect</property>
<!---->
<mapping resource="Cat.hbm.xml"></mapping>
4、编写相应的映射类和配置文件,并放在同一目录下,例如:
package net.sf.hibernate.examples.quickstart;
public class Cat {
private String id;
private String name;
private char sex;
private float weight;
public Cat() {
}
public String getId() {
return id;
}
private void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public float getWeight() {
return weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
}
<hibernate-mapping></hibernate-mapping>
<class table="CAT" name="net.sf.hibernate.examples.quickstart.Cat"></class>
<!---->
<id unsaved-value="null" type="string" name="id">
<column not-null="true" sql-type="char(32)" name="CAT_ID">
<generator class="uuid.hex">
</generator></column></id>
<!---->
<property name="name">
<column not-null="true" length="16" name="NAME">
</column></property>
<property name="sex"></property>
<property name="weight"></property>
*5、编写自定义SessionFactory类,例如:(此为Hibernate自带的示例)
HibernateUtil.java
package net.sf.hibernate.examples.quickstart;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class HibernateUtil {
private static Log log = LogFactory.getLog(HibernateUtil.class);
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
log.error("Initial SessionFactory creation failed.", ex);
throw new ExceptionInInitializerError(ex);
}
}
public static final ThreadLocal session = new ThreadLocal();
public static Session currentSession() throws HibernateException {
Session s = (Session) session.get();
// Open a new Session, if this Thread has none yet
if (s == null) {
s = sessionFactory.openSession();
session.set(s);
}
return s;
}
public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
session.set(null);
if (s != null)
s.close();
}
}
6、编写测试Jsp或Serverlet,注意,这里是在Tomcat环境下,不能用普通Java类,示例Jsp:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="net.sf.hibernate.Session"%>
<%@ page import="net.sf.hibernate.HibernateException"%>
<%@ page import="net.sf.hibernate.Transaction"%>
<%@ page import="net.sf.hibernate.examples.quickstart.Cat"%>
<%@ page import="net.sf.hibernate.examples.quickstart.HibernateUtil"%>
<%
try{
Session ssession;
ssession = HibernateUtil.currentSession();
Transaction tx= ssession.beginTransaction();
Cat princess = new Cat();
princess.setName("Princess");
princess.setSex('F');
princess.setWeight(7.4f);
ssession.save(princess);
tx.commit();
HibernateUtil.closeSession();
}catch(HibernateException e){
}
%>
分享到:
相关推荐
**hibernate一级缓存详解** 在Java的持久化框架Hibernate中,一级缓存是其核心特性之一,它为提高数据库操作效率、减少对数据库的访问提供了重要支持。一级缓存,也称为session缓存,是每个Hibernate Session内部...
一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们在Session中对对象进行 CRUD(创建、读取、更新、删除)操作时,这些对象会被自动放入一级...
Hibernate 是一个流行的对象关系映射(ORM)框架,它提供了数据缓存机制以优化数据库访问性能。缓存机制分为一级缓存和二级缓存,两者都有助于减少对物理数据库的直接访问,从而提高应用程序的运行效率。 一级缓存...
一级缓存是每个Session内部的,二级缓存则可以跨Session共享。 12. **实体状态**:Hibernate区分了临时、持久、脱管和游离四种实体状态,理解这些状态有助于更好地管理对象的生命周期。 13. **最佳实践**:包括...
本文将深入探讨Hibernate的一级缓存、二级缓存以及查询缓存,通过具体的实例来阐述它们的工作原理和使用方法。 首先,我们从一级缓存开始。一级缓存是Hibernate默认提供的缓存,它是每个Session级别的,也被称为...
"第一个手写Hibernate"项目旨在帮助开发者深入理解Hibernate的工作原理,通过手动编写相关代码,以实践的方式来学习和掌握Hibernate的核心概念。 **一、Hibernate简介** Hibernate是一个开源的ORM框架,它允许...
在Java的持久化框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它极大地简化了数据库操作。本文将深入探讨Hibernate性能优化中的一个重要概念——一级缓存,并结合给出的压缩包文件“hibernate_cache_...
Hibernate3 是一个非常重要的Java持久化框架,它允许开发者将对象模型与数据库关系模型进行映射,从而简化了数据存取的过程。这个压缩包“hibernate3必要jar包”显然是针对Hibernate3版本的,已经去除了冗余的库文件...
一级缓存是每个Session内的缓存,而二级缓存则是在SessionFactory级别,可跨Session共享。 七、事件监听器 Hibernate支持事件驱动编程,如PreInsertEventListener、PostLoadEventListener等,允许用户在特定操作前...
4. **跨数据库支持**:Hibernate支持多种数据库系统,这意味着使用相同的代码可以在不同的数据库之间迁移。 5. **强大的查询功能**:除了基本的CRUD操作外,Hibernate还提供了强大的查询API,包括HQL(Hibernate ...
例如,如果应用程序对于数据存储的需求非常简单,比如只需要管理一组用户的偏好设置,那么可能根本不需要使用数据库,更不用说一个像 Hibernate 这样强大的 ORM 系统了。从 Java 1.4 开始,标准的 Java Preferences ...
此外,Hibernate 还提供了二级缓存,它是一个跨 Session 的区域,可以提高数据读取性能。 五、session 操作数据 通过 Session,开发者可以执行 CRUD(创建、读取、更新和删除)操作。例如,使用 `save()` 或 `...
在IT领域,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了Java开发者与数据库之间的交互。孙卫琴老师的“Hibernate源码解析”系列深入剖析了Hibernate的内部机制,帮助开发者更好地理解和运用这个...
Hibernate 3.3.1 是一个历史悠久且广泛使用的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为面向对象的代码。这个压缩包文件包含了一系列必要的JAR库,使得开发人员能够轻松地在他们的项目中集成...
**hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...
Hibernate3是中国Java开发社区中广泛使用的持久层框架之一,它为开发者提供了强大的对象关系映射(ORM)功能,简化了数据库操作。这个“hibernate3所需JAR包”包含了所有必要的组件,使得开发者能够在项目中顺利集成...
8. **第二级缓存**:Hibernate支持二级缓存,它可以跨会话共享数据,提高性能。缓存策略(如EHCache)需要在配置文件中指定。 9. **事务管理**:Hibernate提供了对JDBC事务的支持,可以在Session中开始、提交和回滚...
一级缓存在Session级别,而二级缓存是SessionFactory级别的,可跨Session共享数据。 7. **懒加载和立即加载** Hibernate提供了懒加载机制,允许延迟加载关联的对象,直到真正需要时才从数据库获取,从而提高性能。...
Hibernate是一个开放源代码的对象关系映射(ORM)框架,它极大地简化了Java开发者与数据库之间的交互,通过将业务对象与SQL语句解耦,使得开发人员可以更加专注于业务逻辑,而不是底层的数据存储。 在Hibernate 3.2...