【Hibernate】--第一个实例:实现数据表的创建与数据导入

    上篇已经简单介绍了Hibernate的基础知识,对一些文字上的内容,理解起来也许并不是那么的容易。下面就以一个小例子来开始Hibernate的学习之旅。本实例是应用Java程序来创建数据表,并且实现数据的简单添加。

    首先创建一个普通的Java程序,引入基本的jar包和创建基本类,具体如下:

              


    hibernate.cfg.xml的配置信息如下:    

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory >		
	<!--  配置驱动 -->
	  <property name="hibernate.connection.driver_class" >com.mysql.jdbc.Driver</property>
	<!--  配置连接库 表示连接本地库,库名为hibernate_demo1-->
	  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_demo1</property>
	  <!-- 连接数据库的登录名 -->
	  <property name="hibernate.connection.username">root</property>
	  <!-- 数据库密码 -->
	  <property name="hibernate.connection.password">root</property>
	  <!-- 数据库的转换配置,适配器 -->
	  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
	  <!-- 配置在控制台显示sql语句 -->
	  <property name="hibernate.show_sql">true</property>
	  <!-- 配置映射 ,对应所建的User映射-->
	  <mapping resource="com/tgb/hibernate/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>
         上述配置主要是对数据库的连接建立关联,使用MySQL数据库。并且与我们的映射文件建立联系

     用户实体类:User.java       

package com.tgb.hibernate;

import java.util.Date;
/**
 * 用户实体类
 * @author victor
 *
 */
public class User {
  private String id;  //主键
  private String name; //姓名
  private String password;  //密码
  private Date createTime;  //创建时间
  private Date 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 Date getCreateTime() {
	return createTime;
}
public void setCreateTime(Date createTime) {
	this.createTime = createTime;
}
public Date getExpireTime() {
	return expireTime;
}
public void setExpireTime(Date expireTime) {
	this.expireTime = expireTime;
}
}

    映射文件信息: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>
  <!-- 建立数据表映射 -->
  <!-- name值表示是所建的实体类路径,会在数据库中创建相对应的表 -->
  <class name="com.tgb.hibernate.User">
  <!-- id标签表示主键,name的值是字段名。此处表示以id为主键。 -->
    <!-- 若想要另取名,使用colum属性来赋值。
            例如:column="user_id",则数据表中存的是user_id,但是实体类仍然是id,他们之间自动创建映射关系 -->
    <id name="id">
    <!-- generator标签表示主键是自动生成 -->
      <generator class="uuid" />
    </id>
    <!-- property标签是指表的其他属性,name值表示字段名 -->
    <property name="name" />
    <property name="password" />
    <property name="createTime" />
    <property name="expireTime" />
  </class>
</hibernate-mapping>

     创建表的类代码如下:ExportDB.java       

package com.tgb.hibernate;

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

/**
 * 创建表类
 * @author victor
 *
 */
public class ExportDB {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		/*默认读取hibernate.cfg.xml*/
       Configuration cfg=new Configuration().configure();
       
       SchemaExport export=new SchemaExport(cfg);
       //进行创建表,第一个表示将值打印到控制台,第二个表示创建到数据库
       export.create(true, true);
	}

}

     添加数据的类:ImportData.java        

package com.tgb.hibernate;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class ImportData {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
//      读取配置
		Configuration cfg=new Configuration().configure();
//		创建sessionFactory
		SessionFactory factory=cfg.buildSessionFactory();
//		获取session
		Session session=null;
		try{
			session=factory.openSession();
//			开启事务
			session.beginTransaction();
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			User user=new User();
			user.setName("victor");
			user.setPassword("123");
			/*user.setCreateTime(new Date());
			user.setExpireTime(new Date());*/
			user.setCreateTime(formatter.parse( formatter.format(new Date())));
			user.setExpireTime(formatter.parse(formatter.format(new Date())));
			System.out.println(new Date());
		   System.out.println(formatter.parse((formatter.format(new Date()))));
		       
			
//			保存数据
			session.save(user);
//			提交事务,获取当前的事务并提交
			session.getTransaction().commit();
		}
		catch(Exception e){
			e.printStackTrace();
//			回滚
			session.getTransaction().rollback();
		}finally{
//			关闭session
			if(session !=null){
				if(session.isOpen()){
					session.close();
				}
			}
		}
	}

}

    至此,功能所需要的文件建立完毕,首先我们需要在数据库中建立一个与hibernate.cfg.xml中配置的库名一致的数据库,名为hibernate_demo1。然后运行ExportDB.java类,创建数据表。最后运行ImportData.java来添加数据。 

   

    此过程是一个简单的 Hibernate框架应用,通过简单的功能实现,能够初步了解Hibernate框架的使用过程,知道了这几种核心文件的使用方式与关联的方法。接下来就要开启更加系统而又细致的Hibernate框架学习之旅。


    在这个过程中,遇到了一个经常遇到的问题,关于时间格式问题,具体解决过程见下篇。


转载于:https://www.cnblogs.com/victor-grace/p/7253661.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值