zoukankan      html  css  js  c++  java
  • myeclipse开发hibernate应用程序示例

    今天看了hibernate持久层的概述,就用myeclipse试着动手开发了一个简单的学生信息管理小程序。

    在开发之前,先要理解一个概念ORMORMobject-relation mapping)是对象关系映射,对象指的是java中的对象,关系是指关系型数据库,ORM也就是指从Java对象到数据库之间的映射,也就是通过一个类的操作来代表数据库中的操作。而Hibernate是一个ORM的实现,所以,主要功能就是操作数据库(以对象的形式操作数据库)。

    ORM模式图如下:

    本人运用的开发环境为:Eclipse3.2.1+MyEclipse5.1集成开发环境,数据库为MySQL4.01版本。

    下面开始动手吧……
    S1创建数据库,数据库脚本如下:

    create database hibernate;
    use hibernate;
    create table Student
    (
          id varchar(
    32) not null primary key,
          sName varchar(
    20) not null,
          sNO varchar(
    20) not null,
          sex varchar(
    2),  
          email varchar(
    30)
    );

    S2:配置MyEclipse环境,使之能够生成HBM文件,即Hibernate映射文件,过程如下:

    配置MySQL驱动程序:

    Eclipse中,点击Window ->Preferences->MyEclipse -> Database Explorer -> Drivers -> New…

    选择Driver template 为:MySQL Connector/J

    URL: jdbc:mysql://localhost:3306/hibernate,其中hibernate为数据库名称;

    添加MySQL驱动:mysql"lib"mysqldriver.jar,点击 OK

    现在只是配置好数据库的环境,但是还没有真正的生成它,还要创建Database Profile方法如下:

    打开Window -> Open Perspective->MyEclipse Database Explorer

    选择其中的New 图标,上面那个是我以前做过的,因此在新建一个。


    Profile name 由自己来定,我定为JDBC for MySQLDriver 就是选由上面刚刚配置过的

    MySQL Connector/J,点击Next -> Finish


    右键刚刚创建的JDBC for MySQL2,打开Open connection…


    出现了我们刚刚创建的数据库student,好了,可以松一口气了,暂时先放一放,后面还会用到这个界面的,在打开Window -> Open Perspective->Java界面。

    S3新建一个J2EEWeb Project ,工程名为StuHibernate

    然后给这个项目添加hibernate必要的文件.在我们项目名上点击右键,选择MyEclipes --> Add Hibernate Capabilities...弹出对话框如下图:


    其中,JAR Library Installation 选为 Copy checked Library Jars to Project …项,其它项均为默认,点击Next,进入下一个页面后,继续点击Next,进入第三个页面


    选择 DB Profile 文件JDBC for MySQL,就是我们在S2步骤中配置的数据库驱动,在这里,我们就什么也不用手动添写了,直接生成,这就是S2步骤的好处,其中数据库的言也选为MySQL,点击Next进入下一页面

    取消对Crate SessionFactory class? 选项的选择,点击Finish。项目结构如下图:


    src 目录下产生了一个hibernate.cfg.xml 文件:主要是对Hibernate环境配置的,包括使用的数据库或数据源。Eclipse为此提供了图形环境配置,配置方法为在S2步骤中以配置好了,因此直接生成了如下页面:


    其中本人数据库密码为空,因此什么都没有写。由于MySQL数据库驱动以经加了WEB-INF/lib文件夹中,上面的图中以有显示。如果没有加入,则复制到里面。一切准备工作都以就绪,下面我们就开始真正的编写代码了!(终于写到一半了,好累啊,呵呵)

    S4编写POJO类,也就是持久化类:只包含settergetter方法的类。POJOPlain Old Java Objects)是最普通的Java对象,很像JavaBean。类名最好和表名相同,开头最好大写,Student.java


    包名:com.cc.hibernate

    类名:Student

    代码如下:

    package com.cc.hibernate;
    //POJO类
    public class Student {
       
    //写入若干属性
        private String id;
        
    private String sname;
        
    private String sno;
        
    private String sex;
        
    private String email;
        
    public String getEmail() {
           
    return email;
        }
        
    public void setEmail(String email) {
           
    this.email = email;
        }
        
    public String getId() {
           
    return id;
        }
        
    public void setId(String id) {
           
    this.id = id;
        }
        
    public String getSex() {
           
    return sex;
        }

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

        
    public String getSname() {
           
    return sname;
        }

        
    public void setSname(String sname) {
           
    this.sname = sname;
        }

        
    public String getSno() {
           
    return sno;
        }

        
    public void setSno(String sno) {
           
    this.sno = sno;
        }
    }

    S5建立映射文件,在次打开Window -> Open Perspective->MyEclipse Database Explorer,接到S2步骤


    右键点击student表,打开Hibernate Reverse Engineering…

    创建到包含有POJO类包的文件夹下:

    点击 Next,进入下一页面


    Type Mapping Hibernate types

    主键生成方式选为 assigned(指派),由用户自行完成,单击 Next,最后点击 Finish

    在次切回 Window -> Open Perspective->Java界面,出现 Student.hbm.xml映射文件,双击打开查看其代码。

    此文件完成Student类到student表的关系

    S6编写具体类,具体操作Hibernate 方法,在Com.cc.hibernate包下

    新建类 StudentOperate.java

    package com.cc.hibernate;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.Transaction;
    public class StudentOperate {
        
    //在Hibernate中,所有的操作都是通过Session完成
        
    //此Session不同于JSP的Session
        private Session session=null;
        
    //在构造方法之中实例化session对象
        public StudentOperate(){
           
    // 找到Hibernate配置
           Configuration config=new Configuration().configure();
           
    //从配置中取出SessionFactory
           SessionFactory factory=config.buildSessionFactory();
           
    //从SessionFactory中取出一个Session
           this.session=factory.openSession();
        }

       

        
    //所有操作都是由session进行的
        
    //向数据库中增加数据
        public void insert(Student student){
           
    //开始事务
           Transaction tran=this.session.beginTransaction();

           
    //执行语句
           this.session.save(student);

           
    //提交事务
           tran.commit();
        }
    }


    S7com.cc.hibernate 包下新建一个测试类 StudentTest.java

    代码如下:

    package com.cc.hibernate;
    public class StudentTest {
        
    public static void main(String[] args) {
           
    // TODO Auto-generated method stub
           
    //生成POJO类实例化对象
           Student stu=new Student();
           stu.setId(
    "006");
           stu.setSname(
    "chen");
           stu.setSno(
    "03170217");
           stu.setSex(
    "");
           stu.setEmail(
    "chenchuang.sy@163.com");

           
    //实例化 StudentOperate 对象
           StudentOperate op=new StudentOperate();
           op.insert(stu);
        }
    }


    运行后的页面为:

    再次查看数据库,看是否添加成功。

    如果希望看见所执行的SQL语句,打开hibernate.cfg.xml文件

    点击 Add按钮后,出现如下页面:


    选择Propertyshow_sql,设置Valueture,点击OK

    运行后的界面为:

    呵呵终于完成了!

  • 相关阅读:
    版本控制-搭建git服务器
    借助阿里AntUI元素实现两个Web页面之间的过渡——“Loading…”
    在VS中自定义代码段
    案例研究:CopyToAsync
    与其他.Net异步模式和类型进行互操作
    使用boilerplate模版创建解决方案
    实践基于Task的异步模式
    实现基于Task的异步模式
    基于Task的异步模式的定义
    基于Task的异步模式--全面介绍
  • 原文地址:https://www.cnblogs.com/hannover/p/1600697.html
Copyright © 2011-2022 走看看