hibernate第一个例子,保存一个对象

来源:互联网 发布:手机淘宝到货退款流程 编辑:程序博客网 时间:2024/05/16 05:25

首先,我们先要编写一个pojo,继续拿老生常谈的Person类(不了解pojo的可以看我上一篇帖子:关于ormapping)。
环境的配置:
导入jar包:
这里写图片描述
由于这里是Java Project,我们要手动添加jUnit
右键项目名称
这里写图片描述
选择弹出的properties窗口中的buildPath,出现如下对话框
这里写图片描述
这里写图片描述
添加jUnit完毕

写在前面:可能有些人看了之后会觉得奇怪,为什么先写类,然后用类来创建表呢?这是因为,刚刚学习hibernate,我们要多熟悉其配置文件,一般的设计,都是先设计数据库的,即根据表生成类和配置文件

public class Person implements Serializable {    private long pid;    private String pname;    public long getPid() {        return pid;    }    public void setPid(long pid) {        this.pid = pid;    }    public String getPname() {        return pname;    }    public void setPname(String pname) {        this.pname = pname;    }}

写完pojo之后,我们开始写映射文件,有关命名方式,也在上一篇帖子做出了介绍。
这里有一个小细节,在建完Person.hbm.xml之后,我们可以使用如下方式打开
这里写图片描述
点开之后,找到如下图所示。
这里写图片描述
点开之后,就会出现如下的界面
这里写图片描述
点击左下角的source,转到代码界面。
这里写图片描述
现在里面什么都没有,我们从API文档中,拷贝到了scheme约束信息,由于所有的*.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">

然后,我们就可以进行编码,这里只有一个根元素<hibernate-mapping>
然后里面有一个元素,叫class,可是我们把class打出来的时候,它报错了
这里写图片描述
把鼠标移动到class上,可以看到有一系列的元素
这里写图片描述
从里面的元素可以看到,只有(id|composite-id)
没有*/+/?,所以括号里面的2个元素,至少出1个。我们就用Id
写完之后是这样的

<?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"><hibernate-mapping>    <!--         name代表pojo的全名,这里有个小技巧,可以直接把类名打上去,然后看看提示,如果没有提示,关了再开就可以看到提示        table对应的表名     -->    <class name="cn.ansel.domain.Person" table="hiernate1">    <!--         id:代表主键属性        name:主键的名字        column:表中列的名字        length:数据库中字段的长度        type:name的类型,其中这里有两种类型,一种是Java类型,另外一种是hibernate类型,Java类型就是打出它的全名,hibernate类型的是小写的,比如String在hibernate类型中表示的是string,只不过hibernate里面是小写的     -->        <id name="pid" column="pid" length="100" type="java.lang.Long">        <!--             generator:主键的生成类型         -->            <generator class="increment"></generator>        </id>        <!--             property:代表其他属性            name、column、type、length与上雷同              -->        <property name="pname" column="pname" length="200" type="java.lang.String"></property>    </class></hibernate-mapping>

然后我们在src文件下创建hibernate.cfg.xml,然后用以下的方式打开
这里写图片描述
写完之后是这样的

<?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只能连接一个数据库    --><session-factory>    <!--         数据库的用户名    -->    <property name="connection.username">root</property>    <!--         密码    -->    <property name="connection.password">root</property>    <!--         url        这里的URL指的是数据库的地址,        hibernate是不会帮我们创建数据库的,数据库要我们自己创建!    -->    <property name="connection.url">        jdbc:mysql://localhost:3306/hibernate1    </property>    <!--         作用:根据持久化类和映射文件生成表        validate:只验证        create-drop:在开启hibernate的时候创建表,在关闭hibernate的时候删除表        create:每次打开hibernate的时候都创建表        update:每次打开hibernate的时候先validate如果有修改就update,若没有,就create        有了这个属性hbm2ddl.auto,可以让类生成表    -->    <property name="hbm2ddl.auto">update</property>    <!--        这个属性,可以在左下角的configuration界面上的右下角的框中,添加Person.hbm.xml文件    -->    <mapping resource="cn/ansel/domain/Person.hbm.xml" /></session-factory></hibernate-configuration>

关于这里的2个配置文件,大家以后都可以复制直接使用,然后再根据自己的需求做修改即可,scheme是不会变的

然后我们自己创建一个测试类。

public class testCreateTable {    @Test    public void tCreateTable(){        //新建配置文件的对象        Configuration configuration=new Configuration();        //得到配置文件        configuration.configure();        //读取配置文件,在这个时候就把表创建出来了        configuration.buildSessionFactory();    }}

这里有一个细节,看到上面代码的得到配置文件那一步,我们翻阅它的源代码可以看到:

    public Configuration configure() throws HibernateException {        configure( "/hibernate.cfg.xml" );        return this;    }

这说明hibernate.cfg.xml必须要在src目录下,并且名字必须为hibernate.cfg.xml

开始测试,测试成功之后,看到数据库多了一张表
这里写图片描述

0 0
原创粉丝点击