欢迎投稿

今日深度:

hibernate实战笔记1---初探

hibernate实战笔记1---初探


由于在学习Spring的时候学到有关数据库的章节的时候,提及到了hibernate的集成,但是我对hibernate技术几乎是一点不了解,只是知道它是一个orm对象映射框架,所以在初探的章节做一下hibernate的简单了解,以及应用。顺便提一句,我用的是maven添加的hibernate开发包

简单使用hibernate的一般步骤

*创建并且编辑hibernate配置文件

该配置文件主要是用于链接数据库所用,定义了数据库的驱动程序和映射文件的位置,如下是一个简单的配置

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-configuration
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

	<session-factory >

		<property name="show_sql">true</property>
		<property name="connection.driver_class">
			org.gjt.mm.mysql.Driver
		</property>
		<property name="connection.url">
			jdbc:mysql://localhost:3306/pgwt
		</property>
		<property name="connection.username">
			root
		</property>
		<property name="connection.password">
			1234
		</property>
		<property name="dialect">
			org.hibernate.dialect.MySQLDialect 
		</property>

		<mapping resource="com/springframework/hibernate/test.hbm.xml" />

	</session-factory>

</hibernate-configuration>

根据这个配置文件可以看出,所有的配置信息都是包含在<hibernate-configureation>标签之中,该配置文件和Spring的装配bean差不多,<session-factory>对应一个SessionFactory对象,期中配置的是对象中的属性,name代表属性的名称<property>标签的内容就是属性值了,逐一了解一下

show_sql属性是一个boolean值,代表的是在进行数据库操作的时候是否在控制台输出sql语句,在调试的时候非常有用

connection.driver_class代表的是数据库的jdbc驱动程序,我这里使用的是mysql所以就是org.gjt.mm.mysql.Driver

connection.url代表的是访问数据库的url

connection.username 代表的是登录数据库时候的用户名

connection.password 代表的是登录数据库时候的密码

dialect代表的是一种数据库的方言,可以为数据库中的属性设置一些默认值(我目前是这么理解的,以后再深入研究一下)我知道了一个网页内容是数据库对应的方言的类,可以参考一下百度文库地址

<mapping resource=""/>标签是用来引用映射文件地址的,至于映射文件的内容,下文会做简单的介绍


*创建数据库表

简单的创建一个user的数据库表分别有userid,name,password字段


*创建和数据库表对应的javaBean类

如下是一个简单的javaBean

package com.springframework.hibernate;

public class User {

	private String userid;
	private String name;
	private String password;

	public String getUserid() {
		return userid;
	}

	public void setUserid(String userid) {
		this.userid = userid;
	}

	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;
	}

}

*创建映射文件

映射文件中包括了一些配置信息,代码之后会逐一介绍一下配置信息的含义,配置文件如下

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="com.springframework.hibernate.User" table="user">
		<id name="userid" column="userid">
			<generator class="assigned" />
		</id>
		<property name="name" column="name" />
		<property name="password" column="password" />
	</class>
</hibernate-mapping>


在上边的数据库表中包括三个字段,期中userid是主键,然后我来逐一说一下配置文件的含义

所有的配置信息都是写在<hebernate-mapping>标签中,期中可以包含多个<class>标签,目的是为了配置javaBean与数据库表之间的映射关系

<class>标签中name属性代表的是该class标签对应的javaBean,table属性代表该class标签对应的数据库表

<id> 标签是用于映射主键的,user表的主键是userid ,name属性是代表javaBean中属性的名称,column属性代表的是数据库表中的字段

<generator>标签定义了生成主键的方式,叫做生成器,我选择的方式是assigned,是由程序自由生成主键,相对还有其他集中方式,我找了一篇blog里面说的还挺详细blog地址

<property>也是像Spring注入javaBean一样,定义属性所对应的数据库表字段的引用column属性代表的是数据库表中的字段


*创建一个场景类(主函数)

代码如下

package com.springframework.hibernate;

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

public class Client {

	public static void main(String[] args) {
		try {
			SessionFactory sf = new Configuration().configure()
					.buildSessionFactory();
			Session session = sf.openSession();
			Transaction tx = session.beginTransaction();

			for (int i = 0; i < 100; i++) {
				User newuser = new User();
				newuser.setUserid("userid" + i);
				newuser.setName("name" + i);
				newuser.setPassword("password" + i);
				session.save(newuser);
			}

			tx.commit();
			session.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

这类似是一个样板是代码,应该是可以由Spring模板来替换的。

hibernate是通过SessionFactory来启动hibernate(通过配置文件与数据连接),session对象当中包含一些数据库操作的方法


以上是一些使用hibernate的基本方法,了解了以上的知识就可以继续往下学习Spring了,以后再来完善有关hibernate的实战笔记。


www.htsjk.Com true http://www.htsjk.com/shujukunews/1761.html NewsArticle hibernate实战笔记1---初探 由于在学习Spring的时候学到有关数据库的章节的时候,提及到了hibernate的集成,但是我对hibernate技术几乎是一点不了解,只是知道它是一个orm对象映射框架,所...
评论暂时关闭