`
Julysea
  • 浏览: 130930 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

跨向Hibernate(一)

阅读更多
从读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中,放在源文件根目录下即可),内容类似下示:


    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
 
<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;
    }
 
}
 


    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
 
<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一级缓存

    **hibernate一级缓存详解** 在Java的持久化框架Hibernate中,一级缓存是其核心特性之一,它为提高数据库操作效率、减少对数据库的访问提供了重要支持。一级缓存,也称为session缓存,是每个Hibernate Session内部...

    hibernate一级和二级缓存配置与详解

    一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们在Session中对对象进行 CRUD(创建、读取、更新、删除)操作时,这些对象会被自动放入一级...

    hibernate一级缓存和二级缓存的区别与联系

    Hibernate 是一个流行的对象关系映射(ORM)框架,它提供了数据缓存机制以优化数据库访问性能。缓存机制分为一级缓存和二级缓存,两者都有助于减少对物理数据库的直接访问,从而提高应用程序的运行效率。 一级缓存...

    菜鸟快速运行第一个hibernate

    一级缓存是每个Session内部的,二级缓存则可以跨Session共享。 12. **实体状态**:Hibernate区分了临时、持久、脱管和游离四种实体状态,理解这些状态有助于更好地管理对象的生命周期。 13. **最佳实践**:包括...

    Hibernate一级缓存、二级缓存以及查询缓存实例

    本文将深入探讨Hibernate的一级缓存、二级缓存以及查询缓存,通过具体的实例来阐述它们的工作原理和使用方法。 首先,我们从一级缓存开始。一级缓存是Hibernate默认提供的缓存,它是每个Session级别的,也被称为...

    第一个手写Hibernate

    "第一个手写Hibernate"项目旨在帮助开发者深入理解Hibernate的工作原理,通过手动编写相关代码,以实践的方式来学习和掌握Hibernate的核心概念。 **一、Hibernate简介** Hibernate是一个开源的ORM框架,它允许...

    Hibernate性能优化:一级缓存

    在Java的持久化框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它极大地简化了数据库操作。本文将深入探讨Hibernate性能优化中的一个重要概念——一级缓存,并结合给出的压缩包文件“hibernate_cache_...

    hibernate3必要jar包

    Hibernate3 是一个非常重要的Java持久化框架,它允许开发者将对象模型与数据库关系模型进行映射,从而简化了数据存取的过程。这个压缩包“hibernate3必要jar包”显然是针对Hibernate3版本的,已经去除了冗余的库文件...

    hibernate-3.2源代码

    一级缓存是每个Session内的缓存,而二级缓存则是在SessionFactory级别,可跨Session共享。 七、事件监听器 Hibernate支持事件驱动编程,如PreInsertEventListener、PostLoadEventListener等,允许用户在特定操作前...

    深入浅出 Hibernate.pdf

    4. **跨数据库支持**:Hibernate支持多种数据库系统,这意味着使用相同的代码可以在不同的数据库之间迁移。 5. **强大的查询功能**:除了基本的CRUD操作外,Hibernate还提供了强大的查询API,包括HQL(Hibernate ...

    Hibernate 概述

    例如,如果应用程序对于数据存储的需求非常简单,比如只需要管理一组用户的偏好设置,那么可能根本不需要使用数据库,更不用说一个像 Hibernate 这样强大的 ORM 系统了。从 Java 1.4 开始,标准的 Java Preferences ...

    hibernate 重点知识原创

    此外,Hibernate 还提供了二级缓存,它是一个跨 Session 的区域,可以提高数据读取性能。 五、session 操作数据 通过 Session,开发者可以执行 CRUD(创建、读取、更新和删除)操作。例如,使用 `save()` 或 `...

    孙卫琴hibernate source code2

    在IT领域,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了Java开发者与数据库之间的交互。孙卫琴老师的“Hibernate源码解析”系列深入剖析了Hibernate的内部机制,帮助开发者更好地理解和运用这个...

    hibernate3.3.1框架必要jar包整合

    Hibernate 3.3.1 是一个历史悠久且广泛使用的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为面向对象的代码。这个压缩包文件包含了一系列必要的JAR库,使得开发人员能够轻松地在他们的项目中集成...

    hibernate一级缓存、二级缓存和查询缓存

    **hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...

    hibernate3所需JAR包

    Hibernate3是中国Java开发社区中广泛使用的持久层框架之一,它为开发者提供了强大的对象关系映射(ORM)功能,简化了数据库操作。这个“hibernate3所需JAR包”包含了所有必要的组件,使得开发者能够在项目中顺利集成...

    Hibernate 3.1.2中文文档

    8. **第二级缓存**:Hibernate支持二级缓存,它可以跨会话共享数据,提高性能。缓存策略(如EHCache)需要在配置文件中指定。 9. **事务管理**:Hibernate提供了对JDBC事务的支持,可以在Session中开始、提交和回滚...

    Hibernate原理解析

    一级缓存在Session级别,而二级缓存是SessionFactory级别的,可跨Session共享数据。 7. **懒加载和立即加载** Hibernate提供了懒加载机制,允许延迟加载关联的对象,直到真正需要时才从数据库获取,从而提高性能。...

    Hibernate\hibernate3.2官方中文参考手册PDF

    Hibernate是一个开放源代码的对象关系映射(ORM)框架,它极大地简化了Java开发者与数据库之间的交互,通过将业务对象与SQL语句解耦,使得开发人员可以更加专注于业务逻辑,而不是底层的数据存储。 在Hibernate 3.2...

Global site tag (gtag.js) - Google Analytics