本人是从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&characterEncoding=UTF-8
分享到:
相关推荐
**可能原因**:该错误表示Hibernate尝试从数据库中查询一个不存在的字段,通常是由于实体类属性名与数据库字段名不一致导致的。 **解决方案**: 1. **检查实体类属性名**:确认实体类中的属性名与数据库表中的字段...
当Hibernate尝试解析一个XML配置文件时,如果文件中的某些字符不符合UTF-8编码规则,就会抛出此类异常。 **解决方法:** - 确保所有XML配置文件中的文本都符合UTF-8编码标准。 - 使用文本编辑器或IDE检查并修复问题...
当Hibernate尝试保存一个实体时,如果该实体中的某个被标记为`@NotNull`或在映射文件中定义为`not-null="true"`的属性值为null或者指向一个尚未持久化的瞬态(transient)对象,就会抛出此异常。解决方法是确保在...
这个错误表明Hibernate尝试访问的数据库表中不存在名为`isupdate`的列。解决方法是检查Hibernate的映射文件(如.hbm.xml或使用注解的方式),确保实体类中的`isupdate`属性正确地映射到了数据库表的相应列。如果...
刷新事件(Refresh Event)发生在Hibernate尝试更新对象的状态,使其与数据库中的最新数据同步时。这通常在以下情况发生: 1. **显式调用Session的refresh方法**:程序员可以通过调用Session对象的refresh方法来...
如果Hibernate尝试在SQL Server上执行这样的MySQL特定SQL语句,就会抛出错误。因此,确保方言设置正确至关重要。 除了基本的数据库连接配置,Hibernate还支持其他的高级特性,如事务管理、缓存策略、查询语言HQL和...
在描述中提到的`org.hibernate.PropertyValueException: not-null property references a null or transient value`是Hibernate抛出的一个常见异常,表示尝试保存一个实体时,其某个非空属性为null或未持久化。...
【Hibernate入门案例源码】是针对初学者设计的一份教程,旨在帮助理解并掌握Java持久化框架Hibernate的基础应用。Hibernate是一个强大的ORM...记得在实践中不断尝试和调试,以便更好地理解和掌握Hibernate的精髓。
在JavaEE开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本项目“hibernate一对多项目”旨在演示如何在JavaWeb应用...同时,也可以尝试修改配置或业务逻辑,以加深理解和应用。
**Hibernate上机实验1** ...请确保每个步骤都理解透彻,并尝试解决可能出现的问题,以加深对ORM和Hibernate的理解。在实践中不断探索,你会发现Hibernate能极大地提升你的开发效率,让你更专注于业务逻辑的实现。
### Hibernate中Example的用法详解 #### 一、前言 ...通过本文的介绍,相信你已经对`Example`的使用有了全面的认识,接下来不妨在实际项目中尝试运用这些技巧,以提高你的Hibernate应用开发水平。
- 测试全文检索功能是否正常工作,可以尝试使用不同的查询条件进行检索。 #### 五、常见问题及解决方法 - **问题1**:无法找到 Hibernate Search 的相关类或方法。 - **解决方案**:检查 classpath 是否正确包含...
一旦成功安装了 Hibernate Tools,你可以立即尝试使用它的功能: 1. 选择你想要添加 Hibernate 支持的项目,右键点击 "New",然后选择 "Other"。 2. 在弹出的窗口中,展开 "Hibernate" 目录,选择 "(cfg.xml)",...
解压这些文件,运行示例,观察其工作原理,然后尝试修改和扩展它们,以便更好地理解Hibernate的工作方式以及如何在实际项目中应用。 总结,Hibernate作为一个强大的ORM框架,简化了Java开发中的数据库交互。通过...
8. **测试连接**:在代码中编写测试方法,尝试连接数据库,确保配置无误。 在实际开发中,可能会遇到版本兼容性问题、性能优化、事务隔离级别调整等挑战,因此理解这些jar包的功能并熟练掌握其使用是至关重要的。...
Hibernate 是一个广泛使用的Java语言下的对象关系映射(ORM)框架,它允许开发人员将数据库操作与业务逻辑层解耦,使代码...记得在学习过程中,不仅要理解代码的运作机制,还要尝试修改和扩展示例,以巩固所学知识。
**hibernate小白极简实例** Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。对于初学者来说,理解...在实践中不断尝试和理解,将有助于你成为Hibernate的熟练开发者。
在上述例子中,当尝试向数据库插入100,000条数据时,由于默认情况下Hibernate会将所有持久化对象保留在一级缓存中,随着数据量的增加,内存消耗也会迅速增长,最终导致内存溢出。因此,我们需要对一级缓存进行管理。...
进一步学习时,你可以尝试查询、更新和删除操作,以及更复杂的查询表达式。 **总结** 通过这个"Hibernate的第一个例子",我们了解了如何配置Hibernate,创建实体类,设置数据库连接,以及如何进行基本的保存操作。...
在这个例子中,我们首先创建了一个 `Session`,然后开始一个新的事务,并尝试保存用户数据。如果出现异常,则回滚事务并打印错误信息。 以上就是关于 Hibernate 3.0 的一些使用经验和技巧。这些内容涵盖了如何在 ...