`
djsl6071
  • 浏览: 578634 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Tomcat and Hibernate and cat 配置

阅读更多
Tomcat and Hibernate and cat 配置

昨天试着配置了一下Hibernate,其实就是本身自带的例子,照着做了一下,改了几个错误的地方,很多都是网上找来的资料。和大家分享一下。

使用的软件:tomcat5.0.28+hibernate2.1.6+Mysql5.0

这些软件下载,应该很容易的随便搜索就可以找到。最简单是到其官方网站去下。

 

1、安装

tomcat和mysql的安装就不用说了吧

1) 解压下载的压缩包,将解压出来的hibernate2.jar复制到%WebApp%/WEB-INF/lib

2) 将解压出来的lib目录下的

cglib-full-2.0.2.jar
commons-collections-2.1.1.jar
commons-logging-1.0.4.jar
dom4j-1.4.jar
ehcache-0.9.jar
jta.jar
log4j-1.2.8.jar
odmg-3.0.jar

文件同样复制到%WebApp%/WEB-INF/lib,具体请参见解压出来的lib目录下的readme.txt。最简单是直接全部复制粘贴,呵呵。

3) 将解压出来的etc目录下的

log4j.properties

文件复制到%WebApp%/WEB-INF/classes。

4)配置数据库连接池。

打开%Tomcat_HOME\conf\server.xml 在文档末尾加入以下代码:

 

<Context path="/hally" docBase="hally">
    <Resource name="jdbc/hally" scope="Shareable" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/hally">
        <parameter>
            <name>factory</name>
            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
        </parameter>

        <!-- DBCP database connection settings -->
        <parameter>
            <name>url</name>
            <value>jdbc:mysql://localhost:3306/mydb</value>
        </parameter>
        <parameter>
            <name>driverClassName</name><value>org.gjt.mm.mysql.Driver</value>
        </parameter>
        <parameter>
            <name>username</name>
            <value>root</value>
        </parameter>
        <parameter>
            <name>password</name>
            <value>××××</value>
        </parameter>

        <!-- DBCP connection pooling options -->
        <parameter>
            <name>maxWait</name>
            <value>3000</value>
        </parameter>
        <parameter>
            <name>maxIdle</name>
            <value>100</value>
        </parameter>
        <parameter>
            <name>maxActive</name>
            <value>10</value>
        </parameter>
    </ResourceParams>
</Context>

红色部分,改成自己相应的配置。

2、编写相关文件(hibernate文档里都有)

1) 按照参考文档,配置hibernate,将以下代码保存为hibernate.cfg.xml放在%WebApp%/WEB-INF/classes下

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

<hibernate-configuration>

    <session-factory>

        <property name="connection.datasource">java:comp/env/jdbc/hally</property>
        <property name="show_sql">false</property>
        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

        <!-- Mapping files -->
        <mapping resource="Cat.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

同样注意红色部分是改成你自己的。

2) 将以下代码保存为Cat.java,并生成相应的Cat.class,放入%WebApp%/WEB-INF/classes,这里无论你用什么方法生成Cat.class,但最终Cat.class应在%WebApp%/WEB-INF/classes/net/sf/hibernate/examples/quickstart目录下

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;
}

}

3) 将以下代码保存为O/R映射文件Cat.hbm.xml,放入%WebApp%/WEB-INF/classes

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>

    <class name="net.sf.hibernate.examples.quickstart.Cat" table="CAT">

        <!-- A 32 hex character is our surrogate key. It's automatically
            generated by Hibernate with the UUID pattern. -->
        <id name="id" type="string" unsaved-value="null" >
            <column name="CAT_ID" sql-type="char(32)" not-null="true"/>
            <generator class="uuid.hex"/>
        </id>

        <!-- A cat has to have a name, but it shouldn' be too long. -->
        <property name="name">
            <column name="NAME" length="16" not-null="true"/>
        </property>

        <property name="sex"/>

        <property name="weight"/>

    </class>

</hibernate-mapping>

4) 在数据库内建表,结构如下

 Column |         Type          | Modifiers
--------+-----------------------+-----------
 cat_id | character(32)         | not null
 name   | character varying(16) | not null
 sex    | character(1)          |
 weight | real                  |
Indexes: cat_pkey primary key btree (cat_id)

5) 将以下代码保存为HibernateUtil.java,并生成相应的HibernateUtil.class,放入%WebApp%/WEB-INF/classes,同样注意package

package net.sf.hibernate.examples.quickstart;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import net.sf.hibernate.*; import net.sf.hibernate.cfg.*;

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) 将以下代码保存为test.jsp,放入%WebApp%/,用http测试

<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="net.sf.hibernate.Transaction"%>
<%@ page import="net.sf.hibernate.Session"%>
<%@ page import="net.sf.hibernate.cfg.*"%>
<%@ page import="net.sf.hibernate.Query"%>
<%@ page import="net.sf.hibernate.examples.quickstart.HibernateUtil"%>
<%@ page import="net.sf.hibernate.examples.quickstart.Cat"%>
<%@ page import="java.util.*"%>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
 <head>
  <title>Lomboz JSP</title>
  </head>
  <body bgcolor="#FFFFFF">
<%
//添加一只Cat
Session ses = HibernateUtil.currentSession();
Transaction tx= ses.beginTransaction();
Cat princess = new Cat();
princess.setName("王海利");
princess.setSex('F');
princess.setWeight(70.4f);
ses.save(princess);
tx.commit();
HibernateUtil.closeSession();
//读取库里所有Cat
ses = HibernateUtil.currentSession();
tx= ses.beginTransaction();
Query query = ses.createQuery("select c from Cat as c where c.sex = :sex");
query.setCharacter("sex", 'F');
for (Iterator it = query.iterate(); it.hasNext();) {
Cat cat = (Cat) it.next();
out.println("<br>Female Cat: " + cat.getName()+"+"+cat.getSex()+"+"+cat.getWeight());
}
tx.commit();
HibernateUtil.closeSession();
%>
</body>
</html>

小结

以上tomcat5.0.28 + hibernate2.1.6测试通过

为了方便大家,我把代码传了上来,包括建表的sql语句。

hally.rar

解压后直接放再tomcat的webapps目录下,启动tomcat,当让之前要配置好数据库连接池。里面有个cat.sql是我导出的建表的语句。

附:

分享到:
评论

相关推荐

    hibernate 教程

    配置,会话和工厂(Configurations, Sessions and Factories) 10.2. 线程和连接(Threads and connections) 10.3. 考虑对象辨别 10.4. 乐观并发控制(Optimistic concurrency control) 10.4.1. 使用...

    最全Hibernate 参考文档

    1. 在Tomcat中快速上手 1.1. 开始Hibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. 架构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 3. 配置 ...

    Hibernate教程

    2.2.3. Hibernate配置 2.2.4. 用Ant编译 2.2.5. 安装和帮助 2.2.6. 加载并存储对象 2.3. 第二部分 - 关联映射 2.3.1. 映射Person类 2.3.2. 一个单向的Set-based关联 2.3.3. 使关联工作 2.3.4. 值类型的集合...

    hibernate

    配置,会话和工厂(Configurations, Sessions and Factories) 10.2. 线程和连接(Threads and connections) 10.3. 考虑对象辨别 10.4. 乐观并发控制(Optimistic concurrency control) 10.4.1. 使用...

    Hibernate3的帮助文档

    2.2.3. Hibernate配置 2.2.4. 用Ant编译 2.2.5. 安装和帮助 2.2.6. 加载并存储对象 2.3. 第二部分 - 关联映射 2.3.1. 映射Person类 2.3.2. 一个单向的Set-based关联 2.3.3. 使关联工作 2.3.4. 值类型的集合...

    hibernate3.04中文文档.chm

    2.2.3. Hibernate配置 2.2.4. 用Ant编译 2.2.5. 安装和帮助 2.2.6. 加载并存储对象 2.3. 第二部分 - 关联映射 2.3.1. 映射Person类 2.3.2. 一个单向的Set-based关联 2.3.3. 使关联工作 2.3.4. 值...

    Hibernate3+中文参考文档

    1. 在Tomcat中快速上手 1.1. 开始Hibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. 架构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 3. 配置 ...

    hibernate 框架详解

    Hibernate配置 2.2.4. 用Ant编译 2.2.5. 安装和帮助 2.2.6. 加载并存储对象 2.3. 第二部分 - 关联映射 2.3.1. 映射Person类 2.3.2. 一个单向的Set-based关联 2.3.3. 使关联工作 2.3.4. 值类型的集合 ...

    tomcat/resin使用全局数据库连接池资源

    我比较倾向于直接在web应用中配置数据库连接,例如使用struts或者是Hibernate的连接池,这样的好处是无需了解不同的应用服务器在配置数据源的差别,应用实施的时候比较简单。  所以我近的一些项目都是采用这种架构...

    如何查看tomcat的控制台输出的方法

    在web项目调试期间,时常需要查看输出的调试信息,例如当Hibernate设置为显示SQL语句时,每次运行的SQL语句会输出到终端,另外有时需要在代码中插入一些输出语句,以方便掌握运行情况,但当插入System.out.println...

    tomcat8改了jar加载顺序的踩坑记录

    首先,这段代码是hibernate执行有参数的hql的过程中报错的,最上面那层,对string进行强转导致的。 看hql及java对象,发现,参数为string,而参数对应的java对象中的字段类型是BigDcimal。猜测可能是问题出现的原因...

Global site tag (gtag.js) - Google Analytics