`
jiagou
  • 浏览: 2533143 次
文章分类
社区版块
存档分类
最新评论

我的第一个Hibernate实例

 
阅读更多

用的是Hibernate3.6+MyEclipse6.0,以下是一个简单的例子:

(1)导入所要用到的包

antlr-2.7.6.jar,commoms-collections-3.1.jar,dom4j-1.6.1.jar,javassist-3.12.0.GA.jar,jta-1.1.jar,slf4j-api-1.6.1.jar,hibernate3.jar,slf4j-nop-1.6.1.jar,hibernate-jpa-2.0-api-1.0.0.Final.jar,mysql驱动包。

(2)在mysql中建立对应的数据库以及表

create hibernate;

use hibernate;

create table student( id in primary key,name varchar(20),age int);

(3)建立hibernate的配置文件hibernate.cfg.xml(在src目录下)

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

<hibernate-configuration>

<session-factory>

<!-- Database connection settings -->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/hibernate
</property>
<property name="connection.username">XXX</property>
<property name="connection.password">XXX</property>

<!-- JDBC connection pool (use the built-in) -->
<!-- <property name="connection.pool_size">1</property>-->

<!-- SQL dialect -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>

<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>

<!-- Disable the second-level cache -->
<!-- <property name="cache.provider_class">
org.hibernate.cache.NoCacheProvider
</property>-->

<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>

<!-- Drop and re-create the database schema on startup -->
<!-- <property name="hbm2ddl.auto">update</property>-->

<mapping resource="com/hibernate/Student.hbm.xml" />
</session-factory>

</hibernate-configuration>

(4)建立Student类

package com.hibernate;

public class Student {
private int id;
private String name;
private int age;

public Student(){

}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

}
(5)建立Student的映射文件Student.hbm.xml(和Student类放在一起)

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"
http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.hibernate" >
<class name="Student" >
<id name="id" >
</id>
<property name="name" />
<property name="age" />
</class>
</hibernate-mapping>

(6)将映射文件加入到hibernate.cfg.xml中

<mapping resource="com/hibernate/Student.hbm.xml" />
(7)测试类TestStudent
package test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.hibernate.Student;

public class TestStudent {
public static void main(String [] args){
Student stu=new Student();
stu.setId(1);
stu.setName("Bob");
stu.setAge(12);
Configuration config=new Configuration().configure();
SessionFactory sessionFactory=config.buildSessionFactory();
Session session=sessionFactory.openSession();
Transaction transaction=session.beginTransaction();
session.save(stu);
transaction.commit();
session.close();
sessionFactory.close();
}
}

运行,控制台输出Hibernate: insert into Student (name, age, id) values (?, ?, ?)

查看数据库表student,发现数据添加成功

(8)小结

实现这个例子的过程中出现了一些问题

1.Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/EntityListeners
at org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.getDefaults(JPAMetadataProvider.java:96)
at org.hibernate.annotations.common.reflection.java.JavaReflectionManager.getDefaults(JavaReflectionManager.java:226)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1358)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1829)
at test.TestStudent.main(TestStudent.java:17)

原因:hibernate-jpa-2.0-api-1.0.0.Final.jar没有导入

2.Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]

在网上查了好久,都说是没有加javassist包,其实不是这样,是我的映射文件写错了,<property name="age" />我写成了<property name="age " />就因为粗心大意害得我弄了好长时间,这也给了我一个教训,就是写程序一定要小心,注意细节。





分享到:
评论

相关推荐

    hibernate的第一个例子

    这是hibernate 的超级简单的例子,只有一个持久化对象和一个辅助类,还有一个测试类,对于初学者很有参考价值

    hibernate入门--第一个实例

    hibernate 入门详细操作步骤 包括hibernate包,实例实现文档····

    Hibernate实践例子程序

    Hibernate 是一个开源的O/R mappimg的框架,基于JDBC...另外还有两个东东,一个是class2hbm,与第一个相反,是根据class来导出映射文件的。还有一个ddl2hbm,是根据数据库来导出表结构,并生成映射文件和POJO class。

    hibernate 实例二

    这是初学hibernate的第二个例子,如实例一,新建一个数据库,接着配置即可。

    Hibernate Web应用的开发步骤

    Hibernate Web应用的开发一般经过以下几个步骤: (1)创建数据库。 (2)将Hibernate所需的JAR包复制到WEB-INF/lib下。 (3)创建Hibernate的配置文件。 (4)利用Hibernate的第三方工具或Eclipse的有关插件从...

    struts+spring+hibernate 实例

    第一次做SSH,中间发现了很多的问题,经过调试,总算可以正常运行别往数据库中添加数据了。 将此工程做了记录,现发布于此,大家共享

    Hibernate3.1_学习源码

    实体层设计:与第一种方法设计一样,设计三个实体类,分父类和子类 配置文件:依然只配置父类的映射文件,加入discriminator和subclass元素加入子类的映射关系 06 06Hibernate_Collection : Hibernate的容器映射...

    (3.0版本)自己写的struts2+hibernate+spring实例

    我专门申请了一个网盘.所有下载地址在下载下来的这个rar包里面都有详细的介绍和说明. 说一下这个rar里面带的东西.除了源码外带了几篇文档.分别是关于项目中所使用的dwr的配置.table组件的配置说明文档.junit单元...

    Hibernate+中文文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    Java Web开发实例大全

    Java Web开发实例大全(提高卷)筛选、汇集了Java Web开发从基础知识到高级应用各个层面的大量实例及源代码,共有600个左右,每个实例及源代码按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析...

    Hibernate实战(第2版 中文高清版)

    第一部分 从Hibernate和EJB 3.0开始  第1章 理解对象/关系持久化   1.1 什么是持久化   1.1.1 关系数据库   1.1.2 理解SQL   1.1.3 在Java中使用SQL   1.1.4 面向对象应用程序中的持久化   1.2 范式不...

    Hibernate中文API

    1.2. 第一部分 - 第一个Hibernate应用程序 首先我们将创建一个简单的基于控制台的(console-based)Hibernate应用程序。由于我们使用Java数据库(HSQL DB),所以不必安装任何数据库服务器。 假设我们希望有一个小...

    HibernateAPI中文版.chm

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    hibernate3.2中文文档(chm格式)

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    Struts+Hibernate+Spring整合分页实例(带排序功能)part1

    这是Java常用框架阶段在为学生答疑时做的一个SSH整合分页实例(第一部分),涉及了SSH整合、日期模糊查询、查询条件绑定、查询结果排序等功能,希望能为大家提供一些思路。 分页是绝大多数MIS系统必需的功能之一,...

    第24次课-1 Spring与Hibernate的整合

    第24次课-1 Spring与Hibernate的整合 本节主要内容 24.1 概述 24.2 管理SessionFactory 24.3 Spring对Hibernate的简化 24.1 概述 24.1.1 概述 Spring提供了很多IoC特性的支持,方便处理大部分典型的Hibernate整合...

    Hibernate中文详细学习文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    精通JAVA Web整合开发jsp+ajax+struts+hibernate第15章 综合实例:电子商城系统源码

    精通JAVA Web整合开发jsp+ajax+struts+hibernate 第15章 综合实例:电子商城系统源码 无法全部上传,太大了,所以就把最重要的一章源代码先上传了,其他的有再上传。在MyEclipse中可以运行的

    Hibernate 中文 html 帮助文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    第3章 第一个Hibernate应用 47 本章通过简单的helloapp应用例子,演示如何利用Hibernate来持久化Java对象。 3.1 创建Hibernate的配置文件 47 3.2 创建持久化类 48 3.3 创建数据库Schema 51 3.4 创建对象-关系...

Global site tag (gtag.js) - Google Analytics