下面我们开始写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(); } }
相关推荐
### jBPM 4.4 开发环境搭建与 HelloWorld 实例详解 #### 一、jBPM 4.4 开发环境搭建 ##### 1.1 准备所需工具 为了构建一个完整的 jBPM 4.4 开发环境,我们需要准备以下工具: - **jBPM 4.4**: `jbpm-4.4.zip` - **...
第17章 Hibernate的Helloworld程序 第18章 配置Hibernate 第19章 Hibernate的会话与O/R映射 第20章 Hibernate的查询与更新技术 第21章 Hibernate的高级技术 第4篇 Spring篇 第22章 Spring的Helloworld程序 第...
第17章 Hibernate的Helloworld程序 第18章 配置Hibernate 第19章 Hibernate的会话与O/R映射 第20章 Hibernate的查询与更新技术 第21章 Hibernate的高级技术 第4篇 Spring篇 第22章 Spring的Helloworld...
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...
17 HelloWorld 45 Xml: 45 Code: 45 18 从数据库中取出xml文件和png图片 48 19 向页面输出图片 49 20 页面显示图片 50 21 获取已加载到数据库中的XML文件,改修后并重新发布 51 21 会签 53 Xml: 53 code: 54 工作流...
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 ...
通过一个简单的 HelloWorld 流程来介绍如何使用 jBPM 创建和执行流程。 **3.2. 数据库示例** 演示如何设置数据库来支持 jBPM 的持久化需求,包括配置 Hibernate 与数据库的连接。 **3.3. 上下文示例:流程变量** ...
2. **创建第一个Struts应用**:从创建简单的Hello World程序开始,理解配置文件的设置,以及Action和视图如何协同工作。 3. **处理表单提交**:通过ActionForm收集用户输入,处理表单验证,并将结果返回给用户。 4...
##### 2.2 第一个DWR程序:HelloWorld - **将DWR放入你的工程**:下载DWR的jar包并添加到项目的类路径中。 - **编辑配置文件**:创建`web.xml`文件,配置DWR相关的servlet和过滤器。 - **编写service**:创建Java类...
**1.2 第一个DWR程序:HelloWorld** - **1.2.1 将DWR放入工程**: 首先需要下载 DWR 的相关文件,并将其添加到项目的类路径中。 - **1.2.2 编辑配置文件**: 在 web.xml 中配置 DWR 相关的 Servlet 和 Filter。 - **...
Java EE 框架..................................................................................................................................................................................1 ...
通过简单的HelloWorld示例介绍如何快速启动并执行一个基本的JBPM流程。 #### 3.2 数据库示例 展示如何将JBPM与数据库集成,持久化流程实例和任务状态。 #### 3.3 上下文示例:流程变量 讲解如何在流程中使用变量,...
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 在...
##### 2.4 HelloWorld示例 最简单的Grails应用程序通常会以一个简单的“Hello World”程序作为起点。这个示例展示了如何使用Grails的基本语法和结构来实现Web应用的核心功能。 ##### 2.5 在IDE中设置 为了更好地...
#### 3.1 HelloWorld example - **入门示例**:展示了如何使用jBPM创建一个简单的“Hello World”工作流。 - **步骤**:从创建流程定义到执行流程实例的过程。 #### 3.2 Database example - **数据库集成**:介绍...
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 在...
使用BeanPostProcessor的Hello World示例 3.7.1.2. RequiredAnnotationBeanPostProcessor示例 3.7.2. 用BeanFactoryPostProcessor定制配置元数据 3.7.2.1. PropertyPlaceholderConfigurer示例 3.7.2.2. ...
Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流...
Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流...