使用hibernate连接数据库并自动创建表

Hibernate是一种Java语言下的对象关系映射解决方案。 它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate也是目前Java开发中最为流行的数据库持久层框架,现已归JBOSS所有。

它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。

Hibernate不仅负责从Java类到数据库表的映射(还包括从Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而极大地缩短的手动处理SQL和JDBC上的开发时间。
下面贴出我的测试代码
News的javabean

package test;

public class News {
	private Integer id;
	private String title;
	private String content;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

}

hibernate配置文件

<?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">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
	<session-factory>
		<!--配置数据库的驱动程序,Hibernate在连接数据库时,需要用到数据库的驱动程序 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver </property>
		<!-- 让hibernate自动创建数据库表,但是数据库是要手动创建的 -->
		<property name="hbm2ddl.auto">update</property>
		<!--设置数据库的连接url:jdbc:mysql://localhost/hibernate,其中localhost表示mysql服务器名称,此处为本机, 
			hibernate是数据库名 -->
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate </property>
		<!--连接数据库是用户名 -->
		<property name="hibernate.connection.username">root </property>
		<!--连接数据库是密码,我的密码为空 -->
		<property name="hibernate.connection.password"></property>

		<!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于差错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可以设置为false,提高运行效率 -->
		<property name="hibernate.show_sql">true </property>
		<property name="hibernate.format_sql">true </property>

		<!--connection.characterEncoding连接数据库时数据的传输字符集编码方式,最好设置为gbk,用gb2312有的字符不全 -->
		<property name="connection.characterEncoding">gbk </property>

		<!--hibernate.dialect 只是Hibernate使用的数据库方言,就是要用Hibernate连接那种类型的数据库服务器。 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect </property>
		<!-- 罗列所有的配置文件 -->
		<mapping resource="test/News.hbm.xml" />
	</session-factory>
</hibernate-configuration>

News.hbm.xml

<?xml version='1.0' encoding='UTF-8'?>
<!-- hibernate DTD文件的声明 -->
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 映射文件的根节点 -->
<hibernate-mapping package="test">
	<!-- 对象关系映射的开始:class元素表示类和数据库中的表的映射关系。 name属性指定持久化类(或者接口)的Java全限定名; table属性指定要映射的对应的数据库表名 -->
	<class name="News" table="news">
		<!-- 持久化类对象的对象标识符(OID)和表的主键的映射关联: name属性指定类中作为OID的属性名; column属性表中主键字段的名字; 
			type属性指定Hibernate的映射类型 -->
		<id name="id" column="id" type="int">
			<!-- 指定对象标识符生成器:class属性指定生成器的类别名 -->
			<generator class="identity" />
		</id>
		<!-- 普通属性的映射: name属性:属性的名字,以小写字母开头; column属性:对应的数据库字段名 type属性:指定Hibernate的映射类型 -->
		<property name="title" column="name" type="string" />
		<property name="content" column="age" type="string" />
	</class>
</hibernate-mapping>

NewsManager.java

package test;

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

public class NewsManager {
	public static void main(String[] args) throws Exception {
		// 实例化Configuration
		Configuration conf = new Configuration()
		// 加载默认的hibernate配置文件
				.configure();
		SessionFactory sf = conf.buildSessionFactory();
		// 创建session
		Session sess = sf.openSession();
		// 开始事务
		Transaction tx = sess.beginTransaction();
		// 创建实例化消息
		News n = new News();
		n.setTitle("test");
		n.setContent("test");
		// 保存消息
		sess.save(n);
		// 提交事务
		tx.commit();
		// 关闭session
		sess.close();
		sf.close();
	}
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注