`

第一个hibernate项目

阅读更多




什么是POJO?

POJO是最纯粹的Java对象,也就是说这个对象没有继承任何第三方框架的任何类和实现他的任何接口。



轻量级框架:没有侵入性,也就是说没侵入Hibernate任何东西。轻量级框架最显著的一个特点就是没有侵入性,没有侵入性好在那里,就是移植性就会比较好。





类似Hibernate框架适合在那些情况下使用:

★合适的情况

S征对某一个对象,简单的把它查询下来,然后再对它进行编辑,修改,而且编辑修改只是对单个对象,而不是说对所有的对象批量修改,批量的删除等等,在这样的情况下是适合的。

S对象之间有着很清晰的关系。如:User和Group,它们有很清晰的关系,多个用户属于一个组,一个组下有多个用户。如果从关系上来看,多个用户属于一个组,我们可以映射成多对一关系,叫Many to One这样一个关系;那么从组到用户来看,一个组下有多个用户,那么这是一对多的关系,One to Many,这是一个很正常的关系。但如果这种关系已经很错综复杂了,那么其实并不适合使用类似Hibernate这种框架,也就是O-R映射工具。

★不适合的情况:

批量的对数据时行修改的时候,在这种情况下Hibernat是不适合的,还有Apache OJB、JDO等框架都不适合,这是O-R构架的一个弱点。



所谓的映射就是:这个类要存到那个表里,这个类中的属性要存在那个字段上,是这样一个过程。







Hibernate所需要加的Jar包:

1.)hibernate核心Jar包-hibernate3.jar,位于hibernate-x.x下

2.)hibernate-x.x下的lib包里的所有Jar包

3.)相应的数据库驱动程序。



第一个hibernate项目



1、新建java项目



2、创建User Library,加入如下jar

              * HIBERNATE_HOME/hibernate3.jar

              * HIBERNATE_HOME/lib/*.jar

              * MySql jdbc驱动


             

3、创建hibernate配置文件hibernate.cfg.xml,为了便于调试最好加入log4j配置文件

              例如:

<!DOCTYPE hibernate-configuration PUBLIC

              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

 

<hibernate-configuration>

              <session-factory>

                            <property name="hibernate.connection.url">jdbc:mysql://localhost/qting</property>

                            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

                            <property name="hibernate.connection.username">root</property>

                            <property name="hibernate.connection.password"></property>

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

                            <property name="hibernate.show_sql">true</property>

                            

                            <mapping resource="com/bjsxt/hibernate/User.hbm.xml"/>

              </session-factory>

</hibernate-configuration>
 


4、定义实体类

              也就是持久类,POJO类,即要存入数据库的类

5、定义User类的映射文件User.hbm.xml

             

<?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>

              <class name="com.bjsxt.hibernate.User">

                            <id name="id">

                                          <generator class="uuid"/>

                            </id>

                            <property name="name"/>

                            <property name="password"/>

                            <property name="createTime"/>

                            <property name="expireTime"/>

              </class>

</hibernate-mapping>
 



6、将User.hbml.xml文件加入到hibernate.cfg.xml文件中

             

<mapping resource="com/bjsxt/hibernate/User.hbm.xml"/>





7、编写hbm2ddl工具类,将实体类生成数据库表

              这是一个工具类,专门把对象模型生成为关系模型,也就是说对象生成表,这样一个模型,这个工具类在一个项目中写一次就可以了。其实这个类起的作用就是将Hibernate.cfg.xml转化为DDl。

package pserBean;

 

import org.hibernate.cfg.Configuration;

import org.hibernate.tool.hbm2ddl.SchemaExport;

 

public class ExportDB {

 

              public static void main(String[] args) {

                            

                            //读取hibernate.cfg.xml文件,因为Hibernate默认读取的是Hibernate.prefors文件,所以得在后面加上 . Configure();

                            Configuration cfg = new Configuration().configure();

                            //编写工具类,这个类能将对象模型转换为关系模型。

                            SchemaExport export = new SchemaExport(cfg);

                            

                            export.create(true, true);

              }

}
 

 

8、开发客户端

             

package com.hibernate;

 

import java.util.Date;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

 

public class Client {

 

              public static void main(String[] args) {

                            //读取hibernate.cfg.xml文件

                            Configuration cfg=new Configuration().configure();

                            //创建SessionFactory,一个数据库对应一个SessionFactory

                            SessionFactory sf=cfg.buildSessionFactory();

                            //相当于JDBC中的Connection,但和Connectio不一样,

                            //可以理解为对Connection做了一层封装

                            Session session=null;

                            

                            try{

                                          //创建Session,从工厂创建出一个

                                          session=sf.openSession();

                                          //打开事务(hibernate默认的事务是False,所以得手动开启事务)

                                          session.beginTransaction();

                                          //设置实例类相应的属性

                                          User user=new User();

                                          user.setName("qtliu");

                                          user.setPassword("qtliu");

                                          user.setCreateTime(new Date());

                                          user.setExpireTime(new Date());

                                          //进行存储

                                          session.save(user);

                                          //手动提交,提交事务你必须得到原先开启事务的上下文,不能随便提交

                                          //可以用Session.getTransanction()来得到先前开启事务的上下文

                                          session.getTransaction().commit();

                            }catch(Exception e){

                                          e.printStackTrace();

                                          //事务提交后如果失败得回滚

                                          session.getTransaction().rollback();

                            }finally{

                                          //如果事务不为空

                                          if(session!=null){

                                                        //如果事务没有关闭

                                                        if(session.isOpen()){

                                                                      //那么关闭事务

                                                                      session.close();

                                                        }

                                          }

                            }

              }

}
 


为了方便跟踪sql执行,在hibernate.cfg.xml文件中加入

      
<property name="hibernate.show_sql">true</property>





Hibernate配置文件:包含数据库连接信息,表的映射信息。

表的配置文件:对类与表的映射配置信息。



Configuration类:读取Hibernate.hbm.xml文件中的内容

SessionFaction类:通过Configuration创建SessionFaction实例,实现将类和表之间的映射。

Session.类。通过Session类保存、更新,删除及查询持久化对象,充当持久化管理器。

Session.Transaction 管理事务



分享到:
评论

相关推荐

    菜鸟快速运行第一个hibernate

    菜鸟少走弯路,快速运行第一个hibernate!祝你成功!

    Spring和Hibernate学习笔记

    第一课:第一个hibernate项目 第二课:测试实体对象的生命周期 第三课:hibernate基本映射 第四课:hibernate多对一关联映射 ...................... Spring: 第一课:构建Spring的环境并建立一个例子 第三课:...

    Hibernate知识文档 知识点笔记纪要

    一、第一个hibernate项目 1、新建一个java项目 2、创建User Library,加入jar包 * HIBERNATE_HOME/lib/*.jar * HIBERNATE_HOME/lib/hibernate3.jar * MySql JDBC驱动 3、提供hibernate.cfg.xml文件 4、定义...

    demo.zip springboot + hibernate 的第一个项目

    springboot + hibernate 的第一个项目

    使用Hibernate完成影院售票系统

    北大青鸟二年第一个Hibernate项目 影院售票系统

    struts2+hibernate一周小项目总结

    struts2+hibernate一周小项目总结

    hibernate学习笔记

    第一个hibernate项目(hibernate_first) 2 测试实体对象的生命周期(hibernate_session) 3 hibernate基本映射(hibernate_basemapping) 4 class实体类---表 4 标签id 5 主键生成器Generator 6 多对一, 一对一, 一...

    第一个struts2和hibernate整合简单项目过程详解

    第一个struts2和hibernate整合简单项目过程详解,包含需要什么jar包,详细过程图片详解

    深入浅出Hibernate中文版 part1

    3.4 第一段代码 3.5 代码初解 第4章 Hibernate基础 4.1 Hibernate基础语义 4.2 基础配置 4.3 Hibernate O/R映射 4.4 数据关联 4.5 Hibernate数据检索 4.6 HQL实用技术 4.7 自定义持久化实现 第5章 ...

    Hibernate笔记 马士兵

    第6课 第一个示例Hibernate HelloWorld 7 第7课 建立Annotation版本的HellWorld 9 第8课 什么是O/R Mapping 11 一、 定义: 11 二、 Hibernate的创始人: 11 三、 Hibernate做什么: 12 四、 Hibernate存在的原因: ...

    在项目中使用Hibernate(上)

    文档详细介绍了如何在项目中添加及使用Hibernate组件。此为上册。内容包括:1、数据库准备。2、在MyEclipse创建数据库驱动。3、在MyEclipse创建数据库驱动。其中第3点,包括:如何创建项目以及添加Hibernate组件。

    第1章准备源代码阅读环境与Hibernate的基本配置

    本章除了讲解如何搭建源代码阅读环境,还介绍了Hibernate项目的基本配置、详细的实体映射配置等内容,详细的Hibernate项目配置将在第二章讲解。对于熟识Hibernate开发的读者,可以只看本章小结给出建议内容即可。1.2...

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

     2.1 启动Hibernate项目   2.1.1 选择开发过程   2.1.2 建立项目   2.1.3 Hibernate配置和启动   2.1.4 运行和测试应用程序   2.2 启动Java Persistence项目   2.2.1 使用Hibernate Annotations   ...

    Hibernate授课指导

    一、Hibernate的引入 二、如何获取 三、第一个Hibernate项目 四、代码优化 五、使用Hibernate进行CRUD的操作 六、Hibernate主键生成策略(generator) 七、复(联)合主键 八、对象状态九、HQL{官方推荐的方式} 十、QBC...

    Struts2 + Spring3 + Hibernate3.5 整合(实际使用项目,version2)

    这个资源在去年发布了第一版,已经有很多朋友下了觉得对他们有帮助,所以我才再发了一个第二版,希望对有需要的朋友有所帮助。本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第3章 第一个Hibernate应用  3.1 创建Hibernate的配置文件  3.2 创建持久化类  3.3 创建数据库Schema  3.4 创建对象-关系映射文件  3.4.1 映射文件的文档类型定义(DTD)  3.4.2 把Customer持久化类映射到...

    Struts2 + Spring3 + Hibernate3.5 整合(实际使用项目,version3).part1

    这个资源在去年发布了第一版,已经有很多朋友下了觉得对他们有帮助,所以我才再发了一个第二版,希望对有需要的朋友有所帮助。本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 ...

    MyEclipse中hibernate的配置

    Hibernate是开始做暑假的比赛项目之前学的第一门新技术(花了半天啃了大半本书),可惜最后项目用的是JPA。Hibernate是现在企业运用的最主流持久层中间件技术,恩,貌似可以这么说吧。 和JDBC比较一下,同样都是...

    CustomerSecurityManagementSystem:我的第一个 strutsspringopenjpa|hibernate 项目

    客户安全管理系统对于我的开源 Java Web 项目(主要侧重于后端设计和实现),仍在进行中特拉维斯 CI 状态结构#####Access Layer Struts2 (Dojo + ExtJs + JSON + JasperReports) #####Business Layer Spring4 + ...

    深入浅出Hibernate中文版 part2

    3.4 第一段代码 3.5 代码初解 第4章 Hibernate基础 4.1 Hibernate基础语义 4.2 基础配置 4.3 Hibernate O/R映射 4.4 数据关联 4.5 Hibernate数据检索 4.6 HQL实用技术 4.7 自定义持久化实现 第5章 ...

Global site tag (gtag.js) - Google Analytics