Hibernate

今天开始学习三大框架之一Hibernate。通过今天的学习让我明白了,Hibernate主要完成的是数据库的连接及访问。主要简化将对象数据保存到数据库中,或从数据库中读取数据并封装到对象的工作,整个过程分为以下几步:

1.加jar包,主要包括Hibernate的核心包,支持包,驱动程序,日志包

    Hibernate核心包主要是点击鼠标右键添加的,新建项目,右击,myeclipse-->add Hibernate Capabilities.在这里我们选择Hibernate3.3 core,也就是核心包,一直点下一步,生成Hibernate工具类。在这里我们已经添加了核心包、支持包和日志包,然后我们手动添加mysql jar包。

2.书写配置文件实现和数据库的连接
    
  普通的xml文件采用dtd文件对xml进行了约束

  在hibernate.cfg.xml中添加数据库连接,在Properties中添加hbm2ddl.auto,值为update,表示数据库以更新的形式存在。添加show_sql,值为true,这样我们在运行程序的时候会在后台打印sql语句,方便我们调试。

   在实体类所在的包中添加User.hbm.xml,User是实体类的名字。这就是Hibernate的映射文件,主要目的是完成类名映射表名,属性名映射字段名,属性类型映射字段类型。

代码如下:

<?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 package="com.axjy.entity">
    <!-- 该映射文件目的  类名映射表名,属性名映射字段名,属性类型映射字段类型 -->
    <class name="User" table="t_user">
        <id name="id" column="id" type="int">
            <generator class="native"/>
        </id>
        <property name="username" column="username" type="string"/>
        <property name="password" type="string"/>
    </class>
</hibernate-mapping>


name="User" table="t_user"实现了类名映射表名

id表示数据库中的主键,generator表示自动增长,实现了属性名映射字段名,

type="int"实现了属性类型映射字段类型,这里的int不是Java的数据类型,也不是Mysql的数据类型,而是Hibernate独有的数据类型,如果想在这里写Java的数据类型,也可以,不过要写上包名。

下面的所有字段类似,如果出现映射名字一样的,可以省略不写。

最后把这个映射文件拖到hibernate.cfg.xml中的Mapping中,配置文件书写完毕。

3.书写实体类

根据数据库中的相应字段,编写实体类。

5.测试,生成表

主要代码为:

package com.axjy.test;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.axjy.entity.User;
import com.axjy.util.HibernateUtil;

public class UserTest {
    public static void main(String[] args) {
        Session session = HibernateUtil.getSession();
        User u = new User();
        u.setUsername("张三");
        u.setPassword("123");
        Transaction tx = session.beginTransaction();
        try {
            session.save(u);
        } catch (Exception e) {
            tx.rollback();//回滚
        }
        tx.commit();
        HibernateUtil.closeSession();
    }
}


下面你将会神奇的看到数据库中已经自动生成了一个表,并有一条数据。这里我强调一点,大多人不写 tx.commit();这一句代码,结果发现数据库中没有任何内容,这里我给大家解释这个问题。我们在测试类开始new了一个session,后面我们是把数据存到了session,但并没有提交到数据库,所以我们必须完成这行代码,进行事务提交,这样才是一个完成的hibernate程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值