一口一口吃掉Hibernate(一)——使用SchemaExport生成数据表

      Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

      今天就来演示一下Hibernate最初级的操作,使用SchemaExport创建数据表。

      

      1.首先建立POJO类

package com.bjpowernode.hibernate;

import java.util.Date;

/**
 * 用户
 * @author Longxuan
 *
 */
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;
	}

}

      2、根据POJO类里面里面相关的字段,在包中创建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>
	<class name="com.bjpowernode.hibernate.User" >
		<!--hibernate为我们生成主键id-->
		<id name="id">
			<generator class="uuid" />
		</id>

		<!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
		<property name="name" column="name"></property>
		<property name="password"></property>
		<property name="createTime"></property>
		<property name="expireTime"></property>
	</class>
</hibernate-mapping>

      3、在src中建立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 name="foo">
		<!-- 数据库的连接也可以直接使用hibernate.properties文件 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_test</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><!-- 设置是否显示生成sql语句 -->
		<property name="hibernate.format_sql">true</property><!-- 设置是否格式化sql语句-->

		<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"  />
	</session-factory>
</hibernate-configuration>

      4、建立ExportDB类

package com.bjpowernode.hibernate;

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

/**
 * 将hbm生成ddl
 * @author Longxuan
 *
 */
public class ExportDB {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		// 默认读取hibernate.cfg.xml文件
		Configuration cfg = new Configuration().configure();

		// 生成并输出sql到文件(当前目录)和数据库
		SchemaExport export = new SchemaExport(cfg);

		// true 在控制台打印sql语句,true 导入sql语句到数据库,即可执行
		export.create(true, true);
	}
}

      5、建立log4j.properties日志文件

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout

      现在可以测试了。首先在mysql中创建hibernate_test数据库:

      运行ExportDB的main方法,结果如图:

      

时间: 2024-09-14 17:31:15

一口一口吃掉Hibernate(一)——使用SchemaExport生成数据表的相关文章

Hibernate学习(一)使用SchemaExport生成数据表

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. 今天就来演示一下Hibernate最初级的操作,使用SchemaExport创建数据表. 1.首先建立POJO类 package com.bjpowernode.hibernate; import java.util.Date; /** * 用户 * @author Longxuan * */ public class User { pri

系统学习hibernate之一:利用hibernate中的SchemaExport生成数据

由于hibernate3提供了自带的工具hbm2ddl,建立根据你的对象建立数据库是一件非常简单的事情. Demo结构图如下: 1.首先建立POJO类 1package org.apple.hibernate; 2 3public class User { 4 private String id; 5 private String name; 6 private String password; 7 public String getId() { 8 return id; 9 } 10 publ

Hibernate根据映射文件生成数据库表

问题描述 package com.xy.HibernateUtil; import org.hibernate.cfg.Configuration; import java.io.File; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.h

一口一口吃掉Hibernate(三)——Hibernate给表和字段设置前后缀及分隔符

       在<一口一口吃掉Hibernate(一)--使用SchemaExport生成数据表>中介绍了如何生成数据表.但是这只是最基本的.Hibernate在生成或者操作数据库时,会受一些限制.比如一开始设计表的时候,直接写成了user(id,name,password,createTime)  这种格式的.但是客户后来要求表名称要以"t_"开头,字段名要以"stu_"开头,可以是一些数据库的关键字,单词之间以"_"隔开,方便他们

【IntelliJ Idea】idea下hibernate反向生成工具,根据数据表生成实体

idea插件很齐全,不像ecplise一样.所以直接来步骤吧:   1.选择项目,右键-->Add Frameworks Support-->勾选Hibernate-->勾选Import database schema-->OK   注意:如果第一步你进去之后,发现没有hibernate这一项,怎么办?   File-->project Structure -->Modules--->选中hibernate 之后,选择减号按钮,删除-->apply应用之后再

一口一口吃掉Hibernate(五)——一对多单向关联映射

      在上一篇博客<一口一口吃掉Hibernate(四)--多对一单向关联映射>中,介绍了多对一的关联映射,今天就反过来说一下一对多的单向关联映射.       可能有人会对这2篇博客的题目有点混淆不清,跟日常说的关系有点不同.我们日常说的比如父子关系,夫妻关系都是说的双向关系,而现在讨论的则是单向关系,所以也就有了多对一和一对多的说法.       二者的关系其实很简单,只是角度不同而已.比如说学生和班级的关系.如果从学生角度来看,是多对一的关系.而从班级角度来看,则是一对多的关系.说

一口一口吃掉Hibernate(七)——继承映射

       前几篇博文中讲到了常用的几种关联映射.其实Hibernate中还有一种"省劲儿"的映射,那就是--"继承映射".        学了这么多的关系映射了,继承映射,从字面上也能了解到猜到几分.没错,继承映射就是为继承树而设置的一种映射方案.        继承映射的实现有三种策略: 单表继承.每棵类继承树使用一个表 类表继承.每个子类生成一个表. 具体表继承.每个类生成一个表.       我们还是用实例来说明一下,直接上图吧:        Pig和B

Hibernate映射集合属性、映射组件属性和关联映射都是几张数据表之间的映射的问题,它们在应用上有什么区别?分别应用在什么场合?它们的效率的比较如何?

问题描述 Hibernate映射集合属性.映射组件属性和关联映射都是几张数据表之间的映射的问题,它们在应用上有什么区别?分别应用在什么场合?它们的效率的比较如何?我刚学hibernate,希望诸位前辈赐教!!! 解决方案 解决方案二:请加我QQ,我有视屏教程讲的很细解决方案三:50307924

【hibernate框架】hibernate的ID的生成策略剖析

1.设置id的原因 我们表里面一般有一个id作为主键,一般id不需要手动去传值的. 在实际工作中,在数据库中建表的时候,id在数据库中都是设置成自增字段. 对于类的对象里面的字段,就无法指定自增,需要靠程序自动的生成或者靠数据库来帮我们自动的生成. Jpa/hibernate就已经实现了这样的能力,你可以通过设置来告诉它id怎么样生成,这样你写程序的时候就不用设置id了,这就叫"id的生成策略". 2.让数据库自动生成id的方法 在实体类的xml配置文件中,有: <id name