Hibernate简单应用(一)

本文讲述的是Hibernate对数据库的建立以及插入数据。至于Eclipse中配置hibernate,之前hibernate基础中已经提及过,若有问题的可以查看我之前写的关于hinernate基础的一篇博客,下面是博客链接。

Hibernate学习笔记

接下来我直接对在Eclipse中基于Hibernate对数据库简单操作的应用进行逐步讲解。

1.新建hibernate项目

1.建立一个java项目,名为HibernateDemo
2.引入相关的JAR包

2.配置hibernate.cfg.xml

本文采用全配置的形式,进行映射,所以,配置文件的配置十分重要。首先是hibernate.cfg.xml。整个应用涉及的一些xml文件以及一些数据库相关的信息等都需要在其中配置清楚。它相当于一个应用的总的架构。
本应用的配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        
    </session-factory>
</hibernate-configuration>
以上是主要对driver、url等信息进行配置,至于其余xml文件在后面等后面完成持久类配置之后再添加到hibernate.cfg.xml中

3.建立实体类

hibernate相当于是将一个实体类映射到数据库底层操作的框架,所以开发应用中,首先需要建立实体类,本应用的实体类为User
代码如下:
package per;

import java.util.Date;  
public class User {  
    private String id;  //编号    
    private String name; //姓名  
    private String password; //密码  
    private String createTime; //创建日期  
    private String expireTime; //失效日期  
    public String getId() {  
        return id;  
    }  
    public void setId(String id) {  
        this.id = id;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public String getPassword() {  
        return password;  
    }  
    public void setPassword(String password) {  
        this.password = password;  
    }  
    public String getCreateTime() {  
        return createTime;  
    }  
    public void setCreateTime(String createTime) {  
        this.createTime = createTime;  
    }  
    public String getExpireTime() {  
        return expireTime;  
    }  
    public void setExpireTime(String expireTime) {  
        this.expireTime = expireTime;  
    }  
}  
上面的User类是一个典型的Javabean,每个变量都有setter和getter函数。这也是hibernate框架中的实体类的特点。

4.配置实体类的hbm.xml文件

因为这里不采用注释的方式进行映射,而是采用配置文件的方式进行映射。因此对应每一个实体类都需要配置一个hbm.xml文件。而前面已经有了实体类User.java,所以这里需要配置User.hbm.xml文件
配置文件内容内容如下:
<?xml version="1.0"?>  
<!DOCTYPE hibernate-mapping PUBLIC   
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
<hibernate-mapping>  
    <!-- 将会在数据库中建立一个User表,默认名称与User类名相同,也可以用table属性对表名进行重命名 -->  
    <class name="per.User">  
    <!-- 给表提供一个标识,也就是主键,同样需要提供生成策略,是数据库自增,还是手动增 -->  
        <id name="id">  
            <!-- 生成器,自动生成主键  -->  
            <generator class="uuid"/>  
        </id>  
    <!-- 该表的其它字段,默认列名为name的属性值,也可以用column属性对字段进行重命名 -->  
        <property name="name"/>  
        <property name="password"/>  
        <property name="createTime"/>  
        <property name="expireTime"/>  
    </class>  
</hibernate-mapping>    
之前说过,每个实体类对应一个hbm.xml配置文件,而最终需要将所有的hbm.xml文件都配置到hibernate.cfg.xml文件当中。
配置结果如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        <mapping resource="per/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
与之前的hibernate.cfg.xml文件相比,多了一行<mapping resource="per/User.hbm.xml"/>;这行将User.hbm.xml文件配置到了hibernate.cfg.xml文件中,如果有其它的实体类对应的hbm.xml文件,只需要在后面添加<mapping.../>即可。

5.建立工具类,将User实体类映射成表

这里建立工具类UserTest,首先先建立表,然后向表中插入数据,整个过程只需要面向User对象编程即可,无须对底层数据库进行操作,整个过程都是hibernate框架对java类对象进行映射,将其映射到底层数据库,这里的hibernate框架类似于一个转接口的作用。以下是工具类UserTest。
代码:
package test;  
import org.hibernate.*;  
import org.hibernate.cfg.*;  
import org.hibernate.service.*;  
import org.hibernate.boot.registry.*;  
import org.hibernate.cfg.Configuration;    
import org.hibernate.tool.hbm2ddl.SchemaExport;    
import per.*;  
import java.*;  
public class UserTest {    
    public static void main(String[] args) {            
       //默认读取hibernate.cfg.xml文件    
        Configuration cfg = new Configuration().configure();      
        SchemaExport export = new SchemaExport(cfg);    
        //将ddl打印到控制台,输入到数据库    
        export.create(true, true);    
        ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();  
        SessionFactory sf=cfg.buildSessionFactory(serviceRegistry);  
        Session sess=sf.openSession();  
        Transaction tx=sess.beginTransaction();  
        String[] name= {"a","b","c","d","e","f","g","h","i","j",};  
        String[] password= {"12","22","11","33","44","55","34","66","67","88"};  
        String[] createtime= {"2005-04-04","2004-04-04","2006-06-04","2005-09-04","2005-04-08","2009-10-04","2005-11-04","2015-04-27","2008-07-07","2013-11-04"};  
        String[] expiretime= {"2013-04-05","2009-05-05","2011-10-05","2008-07-18","2009-11-24","2013-08-17","2014-06-05","2018-05-05","2017-06-06","2016-12-05"};  
        //循环写入逐条记录  
        for(int i=0;i<10;i++)  
        {  
            User user=new User();  
            user.setId(i+"");  
            user.setName(name[i]);  
            user.setPassword(password[i]);  
            user.setCreateTime(createtime[i]);  
            user.setExpireTime(expiretime[i]);  
            sess.save(user);  
        }  
        //提交事务  
        tx.commit();  
        //关闭session  
        sess.close();  
        //关闭SessionFactory  
        sf.close();  
        //Commandline tool to export table schema to the database. This class may also be called from inside an application.      
          
    }    
}      


以上的步骤基本满足进行持久化的步骤:

1)开发持久类,由POJO+持久化注解组成

2)获取Configuration

3)获取SessionFactory

4)获取Session,打开事务

5)用OO方式操作数据库

6)关闭事务,关闭Session

按照如上代码操作结果如下图所示,生成了一个user数据表:


下图是创建之后的user数据表的内容:



以上代码中SchemaExport export = new SchemaExport(cfg);export.create(true, true);目的是将ddl打印到控制台,输入到数据库,以下是运行这两句出现的结果,是sql建立table的语句:


如果将上述的hibernate.cfg.xml文件添加配置如下所示:
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="hibernate.format_sql">true</property>
则还可以获得进行crud操作的sql语句,如下图所示:


以上便是在eclipse上利用hibernate框架进行简单数据库建立table,插入数据等操作,如果需要更复杂的操作,建立多个table,甚至进行多表查询,都是同样的原理基础上进行的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值