`
weigang.gao
  • 浏览: 491033 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

hibernate3.5 HelloWorld(1)

 
阅读更多

下面我们开始写hibernate的第一个小程序,hibernate本身并不难,当然它内部实现很复杂,但是hibernte这个框架它的原理很简单,其实就是把你的Object映射成为相关的sql语句,把sql语句从数据库中查询的结果组装成对象,就这个意思。

下面来编写一个简单的Hibernate HelloWorld,如下就是project工程的目录结构以及所需jar文件:


 

1.在这里我们需要把Student存到数据库中去,因此我们首先编写Student.java

package com.bjsxt.hibernate;

public class Student {
	private int id;
	private String name;
	private int age;
	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;
	}	
}

2.在数据库中建立与Student对应的表,表结构如下

create table student(

   id number primary key,

   name varchar2(20),

   age number(3)

)

 

3.在src目录下新建hibernate.cfg.xml文件,从Hibernate Reference Documentation(注意:这个文档并不是所有的hibernate压缩文件中都会自带,因此你要下载自带该开发文档的压缩文件)中搜索hibernate.cfg.xml并copy到该文件中,然后注释调用其中暂时用不到的内容

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

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@localhost:121:ORCL</property>
        <property name="connection.username">system</property>
        <property name="connection.password">niit</property>

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

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.HSQLDialect</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 -->
        <!--是否在console上显示数DML语句,注意:并不会显示DDL语句。如果需要显示DDL语句,需要搭建log4j日志环境-->
        <property name="show_sql">true</property>
        <!--格式化DML语句,注意:这个需要与show_sql搭配使用-->
        <property name="format_sql">true</property>

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

        <mapping resource="org/bjsxt/model/Student.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

 

4.到这一步连接数据不缺了,hibernate自动帮我连接了。我们Student建了,数据表我们也建了,还缺哪个环节?还缺的环节是我这个实体类Student跟我们数据库到底是怎么关联的呢?实体类的那个属性对应表的那个字段呢?是不是还缺这个关联。

在Student.java同一目录下面建立student.hbm.xml (在hibernate的开发文档中搜索hbm.xml,然后copy改)

<!--实体类的配置文件约定俗成要和实体类在一起-->
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.bjsxt.model"><!--package指明你映射的是哪一个package里面的类-->
	<class name="Student" table="student"><!--table可以不用配置,在没有配置table的情况下,hibernate会默认我们的表名和我们的name(指定类名)一样是student,因为数据库的表名是不区分大小写的,这是表的映射-->
		<id name="id" column="id" /><!--name指定的是类中的属性id,column指定的是表中的字段id,当表中的字段和类中的属性相同时,column可以不写;如果实体类的属性和表的字段不相同则必须写,id同时也代表主键,字段的映射-->
		<property name="name" />
		<property name="age" />
    </class>
	
</hibernate-mapping>

 

5.创建测试类StudentTest.java

package com.bjsxt.hibernate;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;//这里不要用经典的Session,即不要引入import org.hibernate.classic.Session,用最新的
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class StudentTest {
	public static void main(String[] args) {
		Student s = new Student();
		s.setId(1);
		s.setName("t1");
		s.setAge(22);
		//理想情况下session.save(t)就将我们的对象存入数据库了,当然你要想拿到这个session的话,首先我们要拿到Configuration对象,
		Configuration cfg=new  Configuration();/*创建一个Configuaration对象,Configuaration看它的名字你就应该知道,它就是用来读配置文件的
		,怎么读配置文件呢?cfg.configure()来读取配置文件。当cfg.configure(参数)的时候,可以用参数来指定你要读哪一个配置文件。如果你不指定
		的话,默认就找class根目录下面的hibernate.cfg.xml*/
		SessionFactory sf=cfg.configure().buildSessionFactory();/*cfg.configure()找class根目录下面的hibernate.cfg.xml,到这步,Configuration就已经把hibernate.cfg.xml文件解析了,解析完以后注意看configure的返回值仍然是一个Configuration,configure完以后返回的是一个已经拥有了配置选项的Configuration对象;调用buildSessionFactory
		方法产生了一个SessionFactory(session工厂)*/
         
		Session session=sf.openSession();//拿到session
     /*在hibernate里面,你的操作都应该放到一个事物(transaction)里面 ,所以说在session里面你要想执行操作呢?你必须执行session.beginTransaction(),
	 beginTransaction()还回的是一个transaction对象,*/
		session.beginTransaction();//还回值可以不用存起来
		session.save(s);/*执行save的时候,hibernate发现s你这个是一个student的类,那么它当然就会去找student这个类的配置文件,既然你要求我save
		这个对象,我当然看看属性和字段怎么对应*/
		session.getTransaction().commit();/*事物完成以后,要将事物提交,session.getTransaction()就拿到了session.beginTransaction()创建的
		事物(transaction)了,commit()将事物提交,这个时候数据库中就有提交的数据了*/
		session.close();
		sf.close();
	}
}

 

 

  • 大小: 20.9 KB
分享到:
评论

相关推荐

    jbpm4.4的安装myeclipse配置还有helloworld实例

    ### jBPM 4.4 开发环境搭建与 HelloWorld 实例详解 #### 一、jBPM 4.4 开发环境搭建 ##### 1.1 准备所需工具 为了构建一个完整的 jBPM 4.4 开发环境,我们需要准备以下工具: - **jBPM 4.4**: `jbpm-4.4.zip` - **...

    java web技术开发大全(最全最新)

    第17章 Hibernate的Helloworld程序 第18章 配置Hibernate 第19章 Hibernate的会话与O/R映射 第20章 Hibernate的查询与更新技术 第21章 Hibernate的高级技术 第4篇 Spring篇 第22章 Spring的Helloworld程序 第...

    java web开发技术大全

    第17章 Hibernate的Helloworld程序 第18章 配置Hibernate 第19章 Hibernate的会话与O/R映射 第20章 Hibernate的查询与更新技术 第21章 Hibernate的高级技术 第4篇 Spring篇 第22章 Spring的Helloworld...

    Java Web程序设计教程

    2.4项目实战——第一个javaee应用:helloworld 28 2.4.1开始创建第一个javaee应用 28 2.4.2熟悉helloworld框架结构 29 本章小结 32 课后练习 32 第3章jsp和servlet 33 3.1开发第一个jsp+servlet应用 33 3.1.1...

    jbpm4.4学习笔记

    17 HelloWorld 45 Xml: 45 Code: 45 18 从数据库中取出xml文件和png图片 48 19 向页面输出图片 49 20 页面显示图片 50 21 获取已加载到数据库中的XML文件,改修后并重新发布 51 21 会签 53 Xml: 53 code: 54 工作流...

    Struts2 in action中文版

    2.2 简单的HelloWorld示例 20 2.2.1 部署示例应用程序 20 2.2.2 探索HelloWorld应用程序 24 2.3 使用注解的HelloWorld 31 2.4 小结 33 第二部分 核心概念:动作、拦截器和类型转换 第3章 使用Struts 2动作 36 3.1 ...

    jbpm3.1

    通过一个简单的 HelloWorld 流程来介绍如何使用 jBPM 创建和执行流程。 **3.2. 数据库示例** 演示如何设置数据库来支持 jBPM 的持久化需求,包括配置 Hibernate 与数据库的连接。 **3.3. 上下文示例:流程变量** ...

    Struts讲解例子

    2. **创建第一个Struts应用**:从创建简单的Hello World程序开始,理解配置文件的设置,以及Action和视图如何协同工作。 3. **处理表单提交**:通过ActionForm收集用户输入,处理表单验证,并将结果返回给用户。 4...

    dwr中文文档

    ##### 2.2 第一个DWR程序:HelloWorld - **将DWR放入你的工程**:下载DWR的jar包并添加到项目的类路径中。 - **编辑配置文件**:创建`web.xml`文件,配置DWR相关的servlet和过滤器。 - **编写service**:创建Java类...

    DWR(Direct Web Remote)中文文档

    **1.2 第一个DWR程序:HelloWorld** - **1.2.1 将DWR放入工程**: 首先需要下载 DWR 的相关文件,并将其添加到项目的类路径中。 - **1.2.2 编辑配置文件**: 在 web.xml 中配置 DWR 相关的 Servlet 和 Filter。 - **...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    Java EE 框架..................................................................................................................................................................................1 ...

    JBPM-v3.2-userguide

    通过简单的HelloWorld示例介绍如何快速启动并执行一个基本的JBPM流程。 #### 3.2 数据库示例 展示如何将JBPM与数据库集成,持久化流程实例和任务状态。 #### 3.3 上下文示例:流程变量 讲解如何在流程中使用变量,...

    Spring3.x企业应用开发实战(完整版) part1

    2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao 2.3.3 LoginLogDao 2.3.4 在...

    grails-reference-documentation-1.1.x.pdf

    ##### 2.4 HelloWorld示例 最简单的Grails应用程序通常会以一个简单的“Hello World”程序作为起点。这个示例展示了如何使用Grails的基本语法和结构来实现Web应用的核心功能。 ##### 2.5 在IDE中设置 为了更好地...

    jbpm jpdl 帮助文档pdf版

    #### 3.1 HelloWorld example - **入门示例**:展示了如何使用jBPM创建一个简单的“Hello World”工作流。 - **步骤**:从创建流程定义到执行流程实例的过程。 #### 3.2 Database example - **数据库集成**:介绍...

    Spring.3.x企业应用开发实战(完整版).part2

    2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao 2.3.3 LoginLogDao 2.3.4 在...

    Spring-Reference_zh_CN(Spring中文参考手册)

    使用BeanPostProcessor的Hello World示例 3.7.1.2. RequiredAnnotationBeanPostProcessor示例 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.2.1. PropertyPlaceholderConfigurer示例 3.7.2.2. ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流...

Global site tag (gtag.js) - Google Analytics