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

首先,我们先要编写一个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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值