您的位置:首页 > 其它

ORM进阶之Hibernate 简介及框架搭

2015-08-12 20:44 453 查看
上一篇博客讲解了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控制台会输出如下信息




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




到这里说明我们的框架已经搭建好了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: