hibernate(三)入手hibernate实例

对于框架,如何区分轻重量级?


 

在介绍我的小demo之前,我想来讨论下这个问题。现在当下的几个观点是


 

1.启动是耗费的系统资源多就是重量级

2.开发包很大就是重量级

3.对于程序的侵入性大就是重量级

 

对于第一个观点现在绝大部分主流还是这样认识的,但是有这样一个问题,spring在仅仅需要最低需求时,需要的jar是非常少的,

当然也是能实现基本功能的,启动耗费的资源也是很小,而如果要实现很多spring的功能就需要很多的资源和jar,这时候按照这个

观点来讲,它既是轻量级也是重量级,所以这个观点还是片面的。

 

对于第二个观点,那几本菜菜开始时候的认识了,不做评论了。第三个观点,个人还是比较认可这个观点的这样来讲的话,对于spring来讲就是轻量级的,而ejb就是重量级的了。而hibernate就是一个轻量级的框架,struts也是轻量级。当然也没有说轻量级就是好的,重量级就是笨重的。只是在不同的应用层次和逻辑处理情境中,各自有各自的优势。ejbj2ee企业级解决方案有他的优势,一般中小型企业一般是SSH为基础的框架开发。

 

开发环境:hibernate 3.2

 Myeclipse 10

 

配置hibernate环境



开发包



技术分享

 

主要为这两个,在hiberante下的lib下全部包,以及hibernate3核心包,另外根据所需数据库加载特定的数据库驱动即可。

 


配置文件


 

*.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">
<hibernate-mapping  package="com.cfl.hibernate"	>

	<class name="Person" table="t_person" >
		<id name="id">
			<generator class="uuid"/>
		</id>
		
		<property name="name" />
		
		<property name="age"/>
		
	</class>
	
</hibernate-mapping>


 

主要是实体对应的映射文件,这个主要是hibernate用来形成动态sql语句的配置文件

 

Hibernate.cfg.xml/hibernate.properties


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

<hibernate-configuration>
	<session-factory >
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">123456</property>
				<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<mapping resource="com/cfl/hibernate/Person.hbm.xml"></mapping>
	</session-factory>
</hibernate-configuration>


 

主要是配置连接数据库的配置,包括

1.配置连接数据库驱动

2.数据库方言

3.数据库用户名

4.数据库密码

5.数据库连接url

6.加载数据库资源文件



 

测试配置



保存数据

 

package com.cfl.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class GetDB {
	public static void main(String[] args){
		
		Configuration cfg=new Configuration().configure();
		SchemaExport export=new SchemaExport(cfg);
		export.create(true,true);
		savePerson();
	}
	public static void  savePerson(){
		//读取hibernate.cfg.xml文件,默认即hibernate.cfg.xml
		Configuration configuration=new Configuration().configure();
		
		SessionFactory sessionFactory=configuration.buildSessionFactory();
		
		Session session=null;
		
		try {
			Person person=new Person();
			person.setName("cfl");
			person.setAge("24");
			
			session=sessionFactory.openSession();
			session.beginTransaction();
			session.save(person);
			session.getTransaction().commit();
		} catch (Exception e) {
			// TODO: handle exception
			session.getTransaction().rollback();
		}finally{
			
			session.close();
			sessionFactory.close();
			
		}
	}
}


 

写在后面



从上面简单的demo里面,可以得知简单几点hibernate给我们带来的


1.封装了jdbc的操作,让程序员更加专注于程序设计,而不是数据库操作

2.无缝连接对象模型和关系模型,应该算是对于在持久层对于面向对象的补充

3.屏蔽数据库sql语句,这个怎么讲呢?既是好的地方,也是不好的味道。好的地方是,无需再去拼装boring的sql语句;

不好的味道是失去了作为原生sql的灵活性,所以在很多实际过程中并不是一股脑的使用hibernate,该用原生sql的地方还是会使用。



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。