`
voff12
  • 浏览: 97114 次
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate的尝试

阅读更多
本人是从php进行web编程,转换为java编程。想学习一下hibernate的使用。大多数应用hibernate,都是用IDE工具来开发。我想就用简单的cmd来完成,但发现了用并不顺畅。做了一个简单的测试来,在编译Test类。
package chen.hibernate;

import chen.hibernate.User;
//import org.hibernate.*;
import org.hibernate.cfg.*;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.HibernateException;
import org.hibernate.cfg.Configuration;

public class   Test {
	public static void main(String[] args) {
		try
		{
			SessionFactory sf = new Configuration().configure().bulidSessionFactory();
			
			Session session  = sf.openSession();

			Transaction tx = session.beginTransaction();

			
            for (int i=0;i<3000;i++)
            {
		    User user = new User();
			user.setUsername("hibernate");
			user.setPassword("123");
			session.save(user);
                        }
			tx.commit();
			session.close();
			
			System.out.println("ok");
			
		}
		catch (HibernateException e)
		{
			e.printStackTrace();
		}

 }
}


的时候,总是出错。老是提示找不到符号。
 方法 bulidSessionFactory()
位置: 类 org.hibernate.cfg.Configuration
                        SessionFactory sf =
dSessionFactory();

Test.java:19: 找不到符号
符号: 类 Transation
位置: 类 chen.hibernate.Test
                        Transation tx = sess
                        ^
Test.java:34: 找不到符号
符号: 类 HibernateException
位置: 类 chen.hibernate.Test
                catch (HibernateException e)

buildSessionFactory()找不到类。初步估计是因为hibernate的包没有引用进来。
决定用google来查一下,看有没有有用的帮助。
关键词为hibernate+找不到符号符号:
花了整整一个下午,没找到原因。头好痛。
半小时后,发现一个字符错误。应Transaction。还剩两个错误

引入一个import org.hibernate.HibernateException后,错误减少为一个。
用javac -verbose chen/hibernate/Test.java后发现这些包都已经导入。

Test.java:16: 找不到符号
符号: 方法bulidSessionFactory()
位置:  类 org.hibernate.cfg.Configuration
                        SessionFactory sf = new Configuration().confi
                                            ^
gure().bulidSessionFactory();

初步原因分析:
SessionFactory sf = new Configuration().configure().bulidSessionFactory()找不到符号,可能因为configuration没引入,没有配置对?
Configuration是hibernate的入口.

三个小时后:
  Configuration config = new Configuration().configure();      
		  SessionFactory sessionFactory = config.buildSessionFactory();  
		  Session session = sessionFactory.openSession(); 
			Transaction tx = session.beginTransaction();

终于编译能过。
但新问题又出现了:
Error parsing XML: XML InputStream
加上
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
解决了这一问题。但
新的问题又出现了
log4j:WARN No appenders could be find for logger
log4j:WARN please initialize the log4j system properly


解决此问题,在hibernate.cfg.xml旁加log4j.properties配置文件。
运行时会出现:很多详细信息。
又出一问题:
Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException
  at java.lang.Class.getDeclaredConstructors0(Native Method)


第二天中午查原因:
到这一步原因已经明显,hibernate2.0与3.0的包不同
在google的途中,看到了这样一句话:
多看文档,多思考,自己解决问题。
多写代码,多锻炼,程序不费力气。

还有点道理,有问题,一定要自己解决。
NoClassDefFoundError: org/objectweb/asm/Type 

下一个问题:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/transaction/Synchronization

导入asm.jar,asm-attrs.jar,jta.jar,ehcache-1.2.3.jar,log4j-1.2.11.jar
就解决了以上问题。
终于成功了。
总结;
1)将hibernate必要的包放到classpath中。
2)将hibernate.cfg.xml放至classes下。
3)User.hbm.xml与User.class放到同一包中。
4)log4j.properties一定要添加,可以看到很多详细信息
5)解决中文乱码,采用?useUnicode=true&amp;characterEncoding=UTF-8
分享到:
评论
2 楼 discus733 2008-05-27  
# 多看文档,多思考,自己解决问题。 
# 多写代码,多锻炼,程序不费力气。
有道理
1 楼 discus733 2008-05-27  
你这一片文章写的很早,但对我这个初学者来说是雪中送炭。多谢了

相关推荐

    Hibernate错误及解决办法集合

    **可能原因**:该错误表示Hibernate尝试从数据库中查询一个不存在的字段,通常是由于实体类属性名与数据库字段名不一致导致的。 **解决方案**: 1. **检查实体类属性名**:确认实体类中的属性名与数据库表中的字段...

    hibernate常见错误解决方案

    当Hibernate尝试解析一个XML配置文件时,如果文件中的某些字符不符合UTF-8编码规则,就会抛出此类异常。 **解决方法:** - 确保所有XML配置文件中的文本都符合UTF-8编码标准。 - 使用文本编辑器或IDE检查并修复问题...

    Hibernate映射导致的几个异常

    当Hibernate尝试保存一个实体时,如果该实体中的某个被标记为`@NotNull`或在映射文件中定义为`not-null="true"`的属性值为null或者指向一个尚未持久化的瞬态(transient)对象,就会抛出此异常。解决方法是确保在...

    Hibernate几个常见错误解决方式

    这个错误表明Hibernate尝试访问的数据库表中不存在名为`isupdate`的列。解决方法是检查Hibernate的映射文件(如.hbm.xml或使用注解的方式),确保实体类中的`isupdate`属性正确地映射到了数据库表的相应列。如果...

    hibernate事件 刷新事件.zip

    刷新事件(Refresh Event)发生在Hibernate尝试更新对象的状态,使其与数据库中的最新数据同步时。这通常在以下情况发生: 1. **显式调用Session的refresh方法**:程序员可以通过调用Session对象的refresh方法来...

    Hibernate不同数据库的连接及SQL方言.pdf

    如果Hibernate尝试在SQL Server上执行这样的MySQL特定SQL语句,就会抛出错误。因此,确保方言设置正确至关重要。 除了基本的数据库连接配置,Hibernate还支持其他的高级特性,如事务管理、缓存策略、查询语言HQL和...

    Hibernate,hibernate笔记

    在描述中提到的`org.hibernate.PropertyValueException: not-null property references a null or transient value`是Hibernate抛出的一个常见异常,表示尝试保存一个实体时,其某个非空属性为null或未持久化。...

    Hibernate入门案例源码

    【Hibernate入门案例源码】是针对初学者设计的一份教程,旨在帮助理解并掌握Java持久化框架Hibernate的基础应用。Hibernate是一个强大的ORM...记得在实践中不断尝试和调试,以便更好地理解和掌握Hibernate的精髓。

    hibernate一对多项目

    在JavaEE开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本项目“hibernate一对多项目”旨在演示如何在JavaWeb应用...同时,也可以尝试修改配置或业务逻辑,以加深理解和应用。

    Hibernate上机实验1

    **Hibernate上机实验1** ...请确保每个步骤都理解透彻,并尝试解决可能出现的问题,以加深对ORM和Hibernate的理解。在实践中不断探索,你会发现Hibernate能极大地提升你的开发效率,让你更专注于业务逻辑的实现。

    Hibernate中Example的用法

    ### Hibernate中Example的用法详解 #### 一、前言 ...通过本文的介绍,相信你已经对`Example`的使用有了全面的认识,接下来不妨在实际项目中尝试运用这些技巧,以提高你的Hibernate应用开发水平。

    hibernate search

    - 测试全文检索功能是否正常工作,可以尝试使用不同的查询条件进行检索。 #### 五、常见问题及解决方法 - **问题1**:无法找到 Hibernate Search 的相关类或方法。 - **解决方案**:检查 classpath 是否正确包含...

    Eclipse 在线配置 Hibernate Tools

    一旦成功安装了 Hibernate Tools,你可以立即尝试使用它的功能: 1. 选择你想要添加 Hibernate 支持的项目,右键点击 "New",然后选择 "Other"。 2. 在弹出的窗口中,展开 "Hibernate" 目录,选择 "(cfg.xml)",...

    Hibernate example

    解压这些文件,运行示例,观察其工作原理,然后尝试修改和扩展它们,以便更好地理解Hibernate的工作方式以及如何在实际项目中应用。 总结,Hibernate作为一个强大的ORM框架,简化了Java开发中的数据库交互。通过...

    hibernate连接金仓数据库所需jar包集合lib.7z

    8. **测试连接**:在代码中编写测试方法,尝试连接数据库,确保配置无误。 在实际开发中,可能会遇到版本兼容性问题、性能优化、事务隔离级别调整等挑战,因此理解这些jar包的功能并熟练掌握其使用是至关重要的。...

    Hibernate基础学习源码

    Hibernate 是一个广泛使用的Java语言下的对象关系映射(ORM)框架,它允许开发人员将数据库操作与业务逻辑层解耦,使代码...记得在学习过程中,不仅要理解代码的运作机制,还要尝试修改和扩展示例,以巩固所学知识。

    hibernate小白极简实例

    **hibernate小白极简实例** Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。对于初学者来说,理解...在实践中不断尝试和理解,将有助于你成为Hibernate的熟练开发者。

    Hibernate下数据批量处理解决方案

    在上述例子中,当尝试向数据库插入100,000条数据时,由于默认情况下Hibernate会将所有持久化对象保留在一级缓存中,随着数据量的增加,内存消耗也会迅速增长,最终导致内存溢出。因此,我们需要对一级缓存进行管理。...

    Hibernate 的第一个例子

    进一步学习时,你可以尝试查询、更新和删除操作,以及更复杂的查询表达式。 **总结** 通过这个"Hibernate的第一个例子",我们了解了如何配置Hibernate,创建实体类,设置数据库连接,以及如何进行基本的保存操作。...

    Hibernate3使用经验

    在这个例子中,我们首先创建了一个 `Session`,然后开始一个新的事务,并尝试保存用户数据。如果出现异常,则回滚事务并打印错误信息。 以上就是关于 Hibernate 3.0 的一些使用经验和技巧。这些内容涵盖了如何在 ...

Global site tag (gtag.js) - Google Analytics