Myeclipse中hibernate开发

Myeclipse中已经集成了hibernate tool,但是使用起来与Eclipse中的hibernate tools Eclipse plugin 有挺大的区别。这两天玩MyEclipse用使用hibernate就尝试了一下,把过程做个笔记。


编辑mysql sql 脚本

  • 创建sql脚本
    在相应的工程里面new一个file文件,将文件改名为scrip.sql。这就创建了一个sql脚本,这个脚本主要就负责数据库中与工程相关的数据表的创建。

    这里写图片描述

  • 编辑sql脚本
    根据项目需求,编辑sql脚本的内容。如:

-- mysql 中注释有三种 --  #   和/*   */  
-- 注意在使用--时  --与后面文字之间最少要间隔一个空格
-- 由于lbs_user_tab 为lbs_info_tab的外键的父表 所以不能直接删除
-- lbs_user_tab,得先删除掉lbs_info_tab

drop table if exists lbs_info_tab;
drop table if exists lbs_user_tab;
-- lbs_user_tab(用户信息表)
create table lbs_user_tab(
user_id char(15), -- 用户编号
user_name  varchar(16) not null,   -- 用户名称
user_pwd varchar(16)  not null,   -- 用户密码
user_cmp_name varchar(30) not null,
user_lca_latitude float not null,
user_lca_longitude float not null,
user_lca_geohash varchar(10) not null,
user_addr varchar(30) not null,
constraint lbs_user_id_pk primary key(user_id)
);
-- lbs_info_tab(活动信息表)
create table lbs_info_tab(
info_id char(15) not null,  --  信息编号
info_title varchar(25) not null, -- 信息标题
info_user_id varchar(25) not null,
info_geohsah varchar(10) not null,
info_latitude float not null,
info_longitude float not null,
info_describe varchar(50) not null,
constraint lbs_info_id_pk primary key(info_id),
constraint lbs_user_id_fk foreign key(info_user_id) references lbs_user_tab(user_id)
);

创建mysql jdbc数据源

在mysql中创建相应的数据库,打开MyEclipse的DB Browser视图,创建新的连接源。选择相应的数据库驱动模板,这里选的mysql,将连接驱动命名为hibernateconn,设置连接URL,本地连接就是localhost:3306/<数据库名称>,设置用户名与密码,导入相应的jdbc驱动jar包,点击Test Driver返回测试成功就完成(测试前,请确保mysql server已经启动)。

这里写图片描述

测试连接成功

连接数据源,创建数据库

  • 在DB Browser中启动数据库驱动连接。

启动数据库连接

  • 在打开的script.sql编辑界面的上部选择相应的连接与数据库。
    然后执行脚本就可以在数据库中生成需要的数据表。

执行sql脚本
其中connection就是数据库驱动连接源,catalog为目录,即要操作的数据库。cmd sep为sql语句中的定义的sql语句分隔符,执行完sql语句我们就可以在DB Browser中的相应数据库中查看数据表信息。

创建hibernate支持编写配置文件

要在一个工程中使用hibernate支持,首先得创建一些hibernate配置文档,MyEclipse作为内部集成了hibernate 工具的IDE,我们可以用它自动的生成hibernate配置文件。选择需要添加hibernate映像文件的工程右击—>MyEclipse–>Add Hibernate Capabilities
这里写图片描述

出现相关的配置界面,由于版本比较老,配置中最高只有hibernate3.2,lib的话,本人首先把hibernate相关的jar包创建了一个名为hibernate-core的用户library,所以选择加载用户类库中的hibernate-core。同时jdbc是自定义的jdbc driver类库,junit-4为自定义的单元测试依赖库。

这里写图片描述

默认下一步,继续,然后选择刚才配置的那个数据库驱动连接源,自动获得相应的配置信息。
这里写图片描述

到这里hibernate的基本配置就完成了。

生成相应的hbm配置文件与JavaBeans映射类

要使用hibernate最后一步就是要生成与数据库表相关的映射JavaBeans类和映射配置文件XX.hbm.xml。这个也可以用MyEclipse的自动生成。
到MyEclipse Datebase Explorer中刚刚新建的数据库连接选中所有表,点击右键—>Hibernate Reverse Enginnering 选中目录存放将要反转出来的实体类查看是否选中Update Hibernate configuration..若没有自己勾选一下,下一步,如图可以设置每张表中id增长方式,及生成的映射文件名称,主要选择有两种:
这里写图片描述

设置工程的路径,与生成的ORM相关文件存放的位置。
这里写图片描述

选择ID增长方式
这里写图片描述
为每个表设置与其对应的javabeans类的类名,与id的增长方式,对应mysql来说一般有两种,native与assigned。native增长方式就是主键为数据库自动增长设置,如从0,1,2,3,4…依序递增。具体的实现方式与使用的数据库有关:如Oracle为sequence,mysql为increment,而assigned的增长方式就是自己设置了,就是key值由用户插入自己设置。这个就根据自己需要来设置了,一般来说id号都是选assigned,要是主键为序号的时候可以选择native。.
这里写图片描述

最后生成结果:
这里写图片描述

编写单元测试

最后我们可以新建一个test.class类,进行相关的单元测试。

//测试类
public class test { 
    private Session  session ; //会话
    private Transaction transaction;   //事务

    //获得相关session与transmission
    @Before
    public void init(){
//      Configuration config = new Configuration().configure();
//      ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
//      sessionFactory = config.buildSessionFactory(serviceRegistry);
//      session = sessionFactory.openSession();
//      transaction = session.beginTransaction();
         session = HibernateSessionFactory.getSession();
        transaction = session.beginTransaction();       
    }   
    @After
    public void delete(){
        transaction.commit();  //提交事务
        session.close(); //关闭会话     
    }
    @Test
    public void testMethod(){
        //生成user对象
        userEnitity user = new userEnitity("1056220000002", 
                "12", "1234567", "天府之国", 
                30.15655f, 104.25648f, "1101101000", "成都市武侯区一环路");
        //保存user对象
        session.save(user); //保存对象进数据库
    }

}

直接右键->run as-> junit Test即可执行测试程序。

小结

本文中使用hibernate的过程是:
创建工程->创建hibernate支持->创建数据库 ->创建数据源连接->sql脚本创建数据表->根据数据表生成hibernate mapping与持久化类

在Eclipse中运用hibernate tools Eclipse plugin也可以用一下流程:
创建工程->创建hibernate支持(在src中右键->new ->other->hibernate->cfg.xml->配置数据源等信息)->编辑相关javabeans持久化类类->创建hibernate mapping(…->hbm.xml)->配置cfg.xml加入hbm.xml->直接进行单元测试即会在数据库中创建数据表。

在hibernate.cfg.xml即hibernate的配置文件中,有几个值得注意的参数。

  • 1.show_sql参数
<property name="show_sql">true</property>

show_sql的参数就是表示是否在控制台中显示所执行的sql语句。

  • 2.format_sql 参数
<property name="format_sql">true</property>

format_sql即在控制台显示sql语句的时候是否已格式化的形式显示。如果是false的时候,控制台中显示的sql语句就是长长的一行,血丑。

  • 3.hbm2ddl.auto参数
<property name="hbm2ddl.auto">update</property>

hbm2ddl.auto参数就是hibernatemapping到数据库ddl(database definition language)的承载方式。主要有以下四种:
create:
每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就会导致数据库表数据丢失。
create-drop :
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:
最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
validate :
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

当我们把hibernate.hbm2ddl.auto=create时hibernate先用hbm2ddl来生成数据库schema。
当我们把hibernate.cfg.xml文件中hbm2ddl属性注释掉,这样我们就取消了在启动时用hbm2ddl来生成数据库schema。通常 只有在不断重复进行单元测试的时候才需要打开它,但再次运行hbm2ddl会把你保存的一切都删除掉(drop)—- create配置的含义是:“在创建SessionFactory的时候,从scema中drop掉所以的表,再重新创建它们”。
注意,很多Hibernate新手在这一步会失败,我们不时看到关于Table not found错误信息的提问。但是,只要你根据上面描述的步骤来执行,就不会有这个问题,因为hbm2ddl会在第一次运行的时候创建数据库schema, 后续的应用程序重启后还能继续使用这个schema。假若你修改了映射,或者修改了数据库schema,你必须把hbm2ddl重新打开一次。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值