Hibernate学习--Hibernate的第一个小例子

前言

近日学习了一下Hibernate,着手写了一下Hibernate的第一个小例子,时间紧张,先记下来再说,日后细细整理。

完整代码

先上完整的项目代码,请移步:https://github.com/GaoZiqiang/HibernateDemo

运行环境

hibernate + MySQL

大体步骤

Hibernate作为处理关系型数据库的重要的轻量级的框架,其使用需要涉及到的东西有很多,涉及到数据库、数据库设计等等一系列的知识。

Hibernate的作用

附图:
工作原理

Hibernate的工作原理

附图:
工作原理图

工具准备

a.Hibernate核心jar包;
b.MySQL合适的版本的驱动;

添加User Library的步骤

a.Windows菜单–>Preferences选项;
b.选择Java–>Build Path–>User Libraries;
1
c.new一个Libraries,命名(注意不要勾选),OK;
2
d.add需要的jar包,finish;
3

使用User Library的步骤

a.点击项目,右键“Build Path”–>Add Libraries;
b.选择User Libraries;
4
c.勾选需要的Library,finishi即可。
5

大体实现步骤

a.配置文件hibernate.cfg.xml和映射文件xxx.hbm.xml;
配置文件参考资料:
http://blog.csdn.net/qq_33429968/article/details/53769707
http://blog.csdn.net/qq_33429968/article/details/53770850
b.要持久的类;
c.Controller类。

项目目录

完整的项目目录:
目录结构

配置文件

代码设计:

外加注释

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

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

    <session-factory>


        <property name="connection.username">root</property>
        <property name="connection.password">666</property>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="connection.url">
            jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterencoding=UTF-8
        </property>
        <!-- <property name="myeclipse.connection.profile"> OracleDriver </property> -->
        <property name="dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
        <!--connection.useUnicode连接数据库时是否使用Unicode编
        码-->   
        <!--connection.characterEncoding连接数据库时数据的传输字符集编码方式,最好设置为gbk,用gb2312有的字符不全-->   
        <property name="Connection.useUnicode">true </property> 
        <!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于差错,程序运行时可以在Eclipse的控制台显示Hibernate
        的执行Sql语句。项目部署后可以设置为false,提高运行效率-->
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hbm2ddl.auto">create</property>
        <property name="current_session_context_class">thread</property>
        <!-- 映射文件 -->
        <mapping resource="person.hbm.xml" />

    </session-factory>

</hibernate-configuration>  

要点解析

a.数据库方言的配置;
参考资料:
http://blog.csdn.net/qq_33429968/article/details/53536778
b.映射文件xxx.hbm.xml的文件路径(不可错,错了就找不到映射文件了);

持久化类

代码设计

<?xml version="1.0" encoding="utf-8"?>  
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools -->
<hibernate-mapping>
    <class name="Person" table="person" schema="hibernate">
        <id name="id" type="java.lang.String">
            <column name="ID" length="32" />
            <generator class="assigned" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" length="20" not-null="true" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="PASSWORD" length="20" not-null="true" />
        </property>
        <property name="sex" type="java.lang.String">
            <column name="SEX" length="20" />
        </property>
        <property name="email" type="java.lang.String">
            <column name="EMAIL" length="30" />
        </property>
    </class>
</hibernate-mapping>  

实现方式

a.自己手动书写,便于了理解;
b.使用插件自动生成。
该法自行尝试。

持久化类

代码设计

public class Person { // POJO类
    private String id;
    private String name;
    private String password;
    private String sex;
    private String email;

    public Person(String id,String name,String password,String sex,String email) {
        this.id = id;
        this.name = name;
        this.password = password;
        this.sex = sex;
        this.email = email;
    }

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}

要点解析

a.属性为private。

Controller类

代码设计

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

public class Controller {

    public static void main(String[] args) {

        // 读取hibernate.cfg.xml文件
        Configuration cfg = new Configuration().configure();

        // 建立SessionFactory
        SessionFactory factory = cfg.buildSessionFactory();

        // 取得session
        Session session = null;
        try {
            // 创建session
            session = factory.openSession();
            // 开启事务
            session.beginTransaction();


            Person user = new Person("001", "gaoziqiang", "001", "nan", "163.com");
            /*user.setId("001");
            user.setName("gao自强");
            user.setPassword("123");
            user.setSex("F");
            user.setEmail("163.com");*/

            // 保存User对象
            session.save(user);

            // 提交事务
            session.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            // 回滚事务
            session.getTransaction().rollback();
        } finally {
            if (session != null) {
                if (session.isOpen()) {
                    // 关闭session
                    session.close();
                }
            }
        }

    }
}

技术要点

a.Hibernate核心jar包的导入;
b.MySQL驱动;
c.两个配置文件的配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值