首页 > 代码库 > ORM进阶:Hibernate框架搭建及开发

ORM进阶:Hibernate框架搭建及开发

    本节将開始。使用hibernate搭建持久层。当然在决定用不用之前,还请斟酌一下是否使用。了解一下Hibernate的优缺点。

 

    Hibernate优劣对照

 

   Hibernate是一个持久的ORM框架。首先要简历一个Java Project  这个就不用多说了吧。之后。我们来搭建Hibernate框架。

 

第一步:引入相关Jar包。包括两部分,核心jar(Hibernate_Home/hibernate3.jar)和相关包(Hibernate_Home/lib/*.jar如上图。

 

    假设没有,请去下载Hibernate。解压之后 如图:

技术分享

 

第二步:建立实体类*.java

package com.bjpowernode.hibernate;

import java.util.Date;

public class User {
	
	//主键
	private String id;
	//名称
	private String name;
	//密码
	private String password;
	
	//提供getter和setter方法
	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;
	}

}

 

第三步:提供*.hbm.xml文件,该文件能够说是实体生成表的配置文件。Hibernate会依据你写的实体类对应的映射文件生成数据库表。

<?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">
		<id name="id">
			<generator class="uuid"/>
		</id>
		<property name="name"/>
		<property name="password"/>
		<property name="createTime"/>
		<property name="expireTime"/>
	</class>
</hibernate-mapping>


 

第四步:提供hibernate.cfg.xml文件,完毕主要的配置信息。并将*.hbm.xml文件配置进入。(能够參考并改动成自己的)依据自己的需求进行取舍。

cfg.xml是整个Hibernate的入口配置

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

<hibernate-configuration>
	<session-factory>
		<!-- Hibernate要连接数据库的驱动。(此处使用mysql的,假设使用的替他数据库的,请上网查找) -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- 指定连接数据库的url,此处数据库名为:hibernate_demo -->
		<property name="hibernate.connection.url">jdbc:mysql:///hibernate_demo</property>
		<!-- 数据库的username与password -->
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<!-- 数据库的方言(用于将对象模型的存储生成对应的sql语句) -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<!-- 该项为true,当与数据库交互的时候,将在Console中打印 sql语句,方便学习 -->
		<property name="hibernate.show_sql">true</property>
	        <!-- 指定连接池里最大连接数 -->  
	        <property name="hibernate.c3p0.max_size">20</property>  
	        <!-- 指定连接池里最小连接数 -->  
	        <property name="hibernate.c3p0.min_size">1</property>  
	        <!-- 指定连接池里连接的超时时长 -->  
	        <property name="hibernate.c3p0.timeout">5000</property>  
	        <!-- 配置此属性,程序会依据须要自己主动创建表 -->  
	        <property name="hbm2ddl.auto">update</property>  
	        <!-- 显示Hibernate持久化操作所生成的SQL -->  
	        <property name="show_sql">true</property>  
	        <!-- 将SQL脚本进行格式化后再输出 -->  
	        <property name="hibernate.format_sql">true</property>
    
    


		<!-- 列出每一个要映射的 类 -->
		<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>


 

    使用工具类。将已经生成的实体类,映射到数据库中(生成数据库表)

    假设使用了设置了<propertyname="hbm2ddl.auto">update</property> 那么就不用写工具类了。

 

    注意:数据库须要手动建立

 

Hibernate的一个特点,耦合性低,easy单元測试。所以最好建立一个单元測试类。測试一下代码的连通性。

 

第五步:写单元測试类。调试是否成功。也是检验代码的质量

 

package com.bjpowernode.hibernate;
import org.hibernate.Session;
import junit.framework.TestCase;

public class UserTest extends TestCase {
	
	public void testSave1(){
		Session session=null;
		try{
			session=HibernateUtils.getSession();
			//开启事务
			session.beginTransaction();

			User user=new User();
			user.setName("张三");
			user.setPassword("123456");

      //事务提交
			session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();
			//事务回滚
			session.getTransaction().rollback();
		}finally{
      //关闭Session
			HibernateUtils.closeSession(session);
		}
		
	}
	
}


 

    通过上面几个步骤,将Hibernate的架构搭建起来。通过自測的方式逐步开发。Hibernate的核心就是OR的转换。即编写hbm映射文件。接下来,我们会在兴许解说

 


 

ORM进阶:Hibernate框架搭建及开发