码迷,mamicode.com
首页 > Web开发 > 详细

ORM进阶之Hibernate 简介及框架搭

时间:2015-08-12 21:44:34      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:hibernate   orm   框架   

       上一篇博客讲解了ORM思想,以及ORM的优缺点,并说了ORM有很多的实现方式,我们将以Hibernate为基础来进行讲解。

        Hibernate是一个基于元数据的轻量级的ORM框架:

       1,元数据(Meta Data):data about data(数据的数据),也就是说描述一个对象数据,相当于这个对象的上下文环境。

       2,轻量级:占用资源少,没有侵入性。(其实我认为这只是相对而言,如果和Ibatis相比,它到成重量级的了)。

         Hibernate分装了对数据库的操作,让我们由面向数据库编程,变为面向对象编程,这样就可以让我们把更多的精力放在项目的业务逻辑上,而不是关注数据库的操作!


         这篇博客为大家说一下如何从无到有的搭建一个Hibernate框架!

1. 准备

        a)  Java开发工具,eclipse ,myeclipse ,netBean 本文以myeclipse为例!

        b)  Jar包,  hibernate 需要的jar,连接mysql 需要的jar

                   antlr-2.7.6.jar(生成SQL语句)

                   asm.jar(字节码增强工具类)

                   c3p0-0.9.1.jar(数据源连接池组件)

                   cglib-2.1.3.jar(代理组件,基于继承的)

                   commons-collections-2.1.1.jar(集合工具类组件,会进行高效的操作)

                   commons-logging-1.0.4.jar(日志输出的转换组件)

                   log4j-1.2.11.jar(日志输出组件,更加详细和可以控制输出格式,及目的地)

                  dom4j-1.6.1.jar(XML解析)

                  ehcache-1.2.3.jar(缓存组件)

                  ejb3-persistence.jar(持久化操作的规范jar包)

                  hibernate3.jar(框架的核心jar包)

                  jta.jar(全局的事务管理)

                  junit-3.8.1.jar        (单元测试)                       

                 mysql-connector-java-3.1.13-bin.jar        (MySQL数据库驱动jar包)

         c)  Mysql数据库一个!

2. 搭建

         a)  首先新建一个java project这里命名为Hibernate

         b) 在Hibernate项目上右键   选择 Build Path-à Configure Build Path 

         技术分享

         c) 出现如下界面,选择Add JARs ,添加需要的jar包。然后OK.

          技术分享                

         d) 在src下建立两个包,分别为com.tgb.domain和com.tgb.service添加一个名字为Hibernate.cfg.xml ,这个文件最好去网上下载一个,省的自己写写错。目录结构如下图所示。

        技术分享

         e)  然后在com.tgb.domain下建立User类和User.hbm.xml文件,在com.tgb.service 下建立Client类和UserService类,如上图所示!

  

3.  写代码

a)  User类代码如下    

package com.tgb.domain;
/**
 * User实体
 * @author hongjie
 *
 */
public class User {
	//主键
	private int id;
	//用户名
	private String username;
	//密码
	private String  passwords;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPasswords() {
		return passwords;
	}
	public void setPasswords(String passwords) {
		this.passwords = passwords;
	}
}

b)  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">
<!-- package   对应实体所在包 -->
<hibernate-mapping package="com.tgb.domain">
<!-- 	table 为映射到数据库中的表名 , 默认与实体名一致 -->
	<class name="User" table="t_users" >
		<id name="id" type="java.lang.Integer">
			<generator class="native"/>
		</id>
		<property name="username"/>
		<property name="passwords"/>
	</class>
</hibernate-mapping>

c)  Client|.java 的代码如下

package com.tgb.service;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//创建一个服务的实例
		UserService userService = new UserService();
		//调用添加的方法 
		userService.add();

	}

}

 d)  UserService.java 的代码如下

package com.tgb.service;

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

import com.tgb.domain.User;

public class UserService {
	public void  add() {
		//创建一个   Configuration  
		Configuration cfg = new Configuration().configure();  
		//创建SessionFactory         
		SessionFactory factory = cfg.buildSessionFactory();   
		                
		Session session = factory.openSession();  
		//开启事务          
		System.out.println("开启事务"); 
		Transaction tran = session.beginTransaction();  
		User user = new User();  
		user.setUsername("zhanghongjie");
		user.setPasswords("zhanghongjie");
		//保存
		session.save(user);  
		System.out.println("保存到数据库中");
		//提交事务。 保存到数据库中
		tran.commit();  
	    session.close();  
	}
}

e)  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>
		<!--mysql 的驱动 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- 链接数据库的字符串,HibernateTest为数据库名 -->
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/HibernateTest</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 语句, 一般设置为true  便于调试 -->
		<property name="hibernate.show_sql">true</property>
		<!-- 当第一次使用实体的时候,会自动在数据库中插入数据 -->
		<property name="hibernate.hbm2ddl.auto">update</property>  
		<!-- 对应所有的实体的xml文件。  -->
		<mapping resource="com/tgb/domain/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

4. 测试

        a) Hibernate能自动创建的数据库表, 不能创建数据库,所以我们要先自己创建一个HibernateTest数据库。创建过程就不说了,这个是mysql 的知识了,不会的话自己可以去补一下。很常用的数据库。

        b) 我们看一下HibernateTest 数据库中有没有表!

        技术分享

       在客户端上右击, 选择 Run as ---》Java  Application。

       技术分享

        然后在Console控制台会输出如下信息

        技术分享

       我们在去数据库中进行查询,发现表已经建立好了,数据插入到数据库中了。

       技术分享

        到这里说明我们的框架已经搭建好了!

版权声明:本文为博主原创文章,未经博主允许不得转载。

ORM进阶之Hibernate 简介及框架搭

标签:hibernate   orm   框架   

原文地址:http://blog.csdn.net/zhanghongjie0302/article/details/47450629

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!