`

菜鸟级Hibernate入门心得

阅读更多
我之前没有学过Hibernate,甚至都没有用过JSP,Servlet做一些东西,一直学的是C#,asp.net,但是在看.net项目源码的时候发现,作者使用ORM技术,当时看得一头雾水,在网上搜了一下,原来是是与Hibernate相关的一门构架思想,所以就去图书馆借了一本书《深入浅出Hibernate》,看完第一张,觉得基本上都明白,因为之前了解过一些设计模式的知识。第二章讲解入门级Hibernate配置,以下是我遇到的困难和解决方案,写出来与大家共勉,如果不对之处,欢迎指正。
准备工作:
1.软件:
IDE:eclipse-jee-galileo-win32.zip
DataBase:mysql5.1.30win32.zip
DataBase View:MySQLFront-v5.1.357.zip
2.源文件:
hibernate-2.1.8.zip
hibernate-extensions-2.1.3.zip
Middlegen-Hibernate-r5.zip
mysql-connector-java-5.0.3-bin.jar
1. 哪里下载Hibernate
这个问题我困惑了很久,在sourceforge上不知道怎么下载。不过还是会了,这个比较简单,就不多说,自己去找!
2. 有数据库产生基础代码
use hibsql;
CREATE TABLE `t_user1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;

新建了一个java项目,把hibernate等一下文件拷到了lib文件下。
3. 如何产生MiddleGen画面和生成*.hbm.xml文件
a) 首先配置MiddleGen所需要的目标数据库参数:
进入Middlegen-Hibernate-r5\config\database\mysql.xml,修改数据库配置文件,包括数据库名称,数据库用户名和密码。
   <!-- =================================================================== -->
   <!-- ant properties/targets for mysql                                    -->
   <!-- note: this is not a proper xml file (there is no root element)      -->
   <!--       it is intended to be imported from a *real* xml file          -->
   <!-- =================================================================== -->

   <property name="database.script.file"           value="${src.dir}/sql/${name}-mysql.sql"/>
   <property name="database.driver.file"           value="${lib.dir}/mysql-connector-java-5.0.3-bin.jar"/>
   <property name="database.driver.classpath"      value="${database.driver.file}"/>
   <property name="database.driver"                value="org.gjt.mm.mysql.Driver"/>
   <property name="database.url"                   value="jdbc:mysql://localhost/hibsql"/>
   <property name="database.userid"                value="root"/>
   <property name="database.password"              value="sunbin123"/>
   <property name="database.schema"                value=""/>
   <property name="database.catalog"               value=""/>

   <property name="jboss.datasource.mapping"       value="mySQL"/>


b) 修改MiddleGen的build.xml构建文件
修改Middlegen-Hibernate-r5根目录下的build.xml文件,此文件是Middlegen的Ant构建配置。Middlegen将根据build.xml文件中的具体参数生成数据库映射文件。
修改配置文件,改为上面修改的mysql数据库
<!DOCTYPE project [
    <!ENTITY database SYSTEM "file:./config/database/mysql.xml">
]>


<path id="lib.class.path">
      <pathelement path="${database.driver.classpath}"/>
      <fileset dir="${lib.dir}">
         <include name="*.jar"/>
      </fileset>
      <!-- The middlegen jars -->
      <!--fileset dir="${basedir}/.."-->
      <fileset dir="${basedir}/middlegen-lib">
         <include name="*.jar"/>
      </fileset>
	  <pathelement path="../hibernate-2.1/hibernate2.jar"/>
	  <fileset dir="../hibernate-2.1/lib">
		<include name="*.jar"/>
	  </fileset>
	  <pathelement path="../hibernate-extensions-2.1.3/tools/hibernate-tools.jar"/>
	  <fileset dir="../hibernate-extensions-2.1.3/tools/lib">
		<include name="*.jar"/>
	  </fileset>
   </path>

如何运行Ant任务相信网上很多教程,这里就不多说了。
结果是:

点击表出现Table Mapping Attribute,点击表中的列出现Column Mapping Attribute,最后点击上方的Genetate按钮会自动生成*.hbm.xml的映射文件。
4. Hibernate配置
Hibernate配置是需要配置hibernate.cfg.xml的配置文件,配置完成放在src目录下,在文件中配置数据库url,数据库JDBC驱动,数据库用户名….

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

<hibernate-configuration>

<session-factory>

<!-- 各属性的配置-->

<!-- 数据库URL -->
<property name="hibernate.connection.url">
	jdbc:mysql://localhost/hibsql
</property>

<!-- 数据库JDBC驱动 -->
<property name="hibernate.connection.driver_class">
	org.gjt.mm.mysql.Driver
</property>

<!-- 数据库用户名 -->
<property name="hibernate.connection.username">
	root
</property>

<!-- 数据库密码 -->
<property name="hibernate.connection.password">
	sunbin123
</property>

<!-- dialect,每个数据库都有其对应的dialect以匹配其平台特性-->
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

<!-- 是否将运行期生成的SQL输出到日志以供调试 -->
<property name="show_sql">true</property>

<!-- 是否使用数据库外连接 -->
<property name="hibernate.use_outer_join">
	True
</property>

<!-- 事务管理类型,这里我们使用JDBC Transaction -->
<property name="hibernate.transaction.factory_class">
	net.sf.hibernate.transaction.JDBCTransactionFactory
</property>

<!-- 映射文件 -->
<mapping resource="org/redsaga/quickstart/Tuser.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

5. 日志配置
Hibernate采用Apache Common logging,并结合Apache log4j作为日志输出组件。
Hibernate开发包的etc目录下附带了一个示例配置log4j.properties,将这个文件复制到src目录下。
6. eclipse如何创建JUnit项目
eclipse如何构建JUint项目比较简单,很多教程,不赘述,但是我想讲一下我遇到的问题,首先是导入包,没学过java的我都会了导入jar文件,相信大家都会,接着就是JUint的一个规定,JUnit中,以“test”作为前缀的方法为测试方法,将被JUnit自动添加到测试计划中运行,还有就是方法必须是public的。
7. 测试的java文件HibernateTest.java
import java.util.List;
import org.redsaga.quickstart.TUser;
import junit.framework.Assert;
import junit.framework.TestCase;


import net.sf.hibernate.HibernateException;  
import net.sf.hibernate.Session;  
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.cfg.Configuration; 
import net.sf.hibernate.cfg.Environment;
public class HibernateTest extends TestCase{
	Session session = null;
	protected void setUp()
	{
		try
		{
			//Configuration config = new Configuration();
			//config.addClass(Tuser.class);
			Configuration config = new Configuration().configure();
			SessionFactory sessionFactory = config.buildSessionFactory();
			session = sessionFactory.openSession();
		}
		catch(HibernateException e)
		{
			e.printStackTrace();
		}
	}
	protected void tearDown()
	{
		try
		{
			session.close();
		}
		catch(HibernateException e)
		{
			e.printStackTrace();
		}
	}
	public void testInsert()
	{
		Transaction tran = null;
		try
		{
			tran = session.beginTransaction();
			TUser user = new TUser();
			user.setName("sunbin");
			session.save(user);
			session.flush();
			tran.commit();
			Assert.assertEquals(user.getId().intValue()>0, true);
		}
		catch(HibernateException e)
		{
			e.printStackTrace();
			Assert.fail(e.getMessage());
			if(tran!=null)
			{
				try
				{
					tran.rollback();
				}
				catch(HibernateException e1)
				{
					e1.printStackTrace();
				}
			}
			
		}
		
	}
	
	public void testSelect()
	{
		String hql = " from TUser where name='sunbin'";
		try
		{
			List userlist = session.createQuery(hql).list();
			TUser user = (TUser)userlist.get(0);
			System.out.print("共有"+userlist.size()+"条记录");
			System.out.print(user.getName());
			Assert.assertEquals(user.getName(), "sunbin");
		}
		catch(HibernateException e)
		{
			e.printStackTrace();
			Assert.fail(e.getMessage());
		}
	}
}

8. 总结一下
以上基本是运行成功的过程,刚开始写的时候是想详细的把不会的写一下,到现在写的差不多了,发现做的还是不够好,这也是我第一次写总结,我想以后我应该是遇到一个问题,就把这个问题的题目和对应的答案记下来,虽然会耽误一点时间,这样就不会有遗漏了,还有一个菜鸟级的问题,我把所有要用的如Hibernate组建放到lib文件下,但是在.java文件中想引用时,却无法直接引用,需要右键项目,点击properties把jar文件引入才能用?能不能自动引用呢?哪位明白告知小弟,提前谢谢了。
分享到:
评论

相关推荐

    JAVA菜鸟级入门教程.pdf

    JAVA菜鸟级入门教程

    菜鸟快速运行第一个hibernate

    标题“菜鸟快速运行第一个hibernate”表明了这是一个针对初学者的教程,旨在帮助他们快速上手并成功运行他们的第一个Hibernate项目。Hibernate是一个强大的Java ORM(对象关系映射)框架,它简化了数据库操作,使得...

    HTML实例教程(菜鸟级入门教程)

    为菜鸟级的新手准备的,图文并茂,实例丰富,简单易懂,无需资源分,任您下载。

    Linux菜鸟入门级命令大全

    以下是一些关于Linux菜鸟入门级命令的详细说明,旨在帮助新手快速熟悉这个强大的操作系统。 1. **ls**:用于列出目录中的文件和子目录。通过`ls -l`可以显示详细信息,包括权限、所有者、大小等。 2. **cd**:改变...

    菜鸟学hibernate

    《菜鸟学Hibernate——从入门到精通》 在Java开发领域,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程旨在帮助初学者快速掌握Hibernate的核心概念和使用方法,通过实例深入理解...

    谁说菜鸟不会数据分析(入门篇)第四版-数据.rar

    《谁说菜鸟不会数据分析(入门篇)第四版》是一本专为初学者设计的数据分析教程,旨在帮助新手快速掌握数据分析的基础知识。这本书可能包含了Excel在数据处理、分析和可视化方面的应用,因为“excle”标签暗示了内容...

    谁说菜鸟不会数据分析(.入门篇)].张文霖.全彩版.pdf

    张文霖所著的《谁说菜鸟不会数据分析(入门篇)》是一本面向初学者的实用数据分析书籍。该书在介绍数据分析基础的同时,也致力于解决初学者在学习数据分析时可能遇到的困惑和难题。 数据分析的概念 数据分析是指...

    iReport菜鸟级入门教程

    这是iReport3.0的最简单的一些操作。具体的操作可以在我的资源里找那个“Jasperreport入门例子”那里Jasperreport在servlet工程下的简单应用。

    谁说菜鸟不会数据分析(入门篇)数据

    《谁说菜鸟不会数据分析(入门篇)》显然是一本旨在引导初学者入门的数据分析教程。通过这本书的学习,菜鸟们可以逐步建立起对数据分析的基本理解,掌握常用的数据处理方法和分析工具。以下是基于这个主题的详细知识...

    c#入门教程(菜鸟级)

    C# 的数据类型分为:值类型和引用类型 值类型: 变量:从用户角度,变量是存储信息的基本单元。从系统角度,变量是计算机内存中的一个存储空间。 C#值类型分为: 简单类型(Simply types) 结构类型(Struct types)...

    很全面的菜鸟入门教材很全面的菜鸟入门教材

    【标题】: "很全面的菜鸟入门教材很全面的菜鸟入门教材" 这个标题明确地指出,这是一份针对初学者的全面性学习资料,可能是针对IT领域的基础教程,旨在帮助新手快速入门。"很全面"这个词组暗示了这份教材包含了众多...

    GIT基础命令使用-菜鸟入门级

    GIT基础命令使用-菜鸟入门级

    经典:Linux菜鸟入门级命令大全 — IT技术 - 赛迪网.files

    经典:Linux菜鸟入门级命令大全 — IT技术 - 赛迪网.files经典:Linux菜鸟入门级命令大全 — IT技术 - 赛迪网.files经典:Linux菜鸟入门级命令大全 — IT技术 - 赛迪网.files经典:Linux菜鸟入门级命令大全 — IT...

    excel数组公式从入门到精通、数组公式经典教程、山菊花讲数组、菜鸟级excel数组公式入门教程四部.rar

    第四部分“菜鸟级excel数组公式入门教程”显然是为初级用户设计的,旨在帮助新手快速上手。这部分可能专注于最基础的数组公式操作,如如何处理多行多列的数据,以及如何避免常见的错误。教程可能以简单的步骤引导...

    maven的使用_看到一篇很实用的入门教程(菜鸟级入门).doc

    本文旨在为初学者提供一份详细且实用的 Maven 入门教程,让菜鸟级别的读者也能轻松上手。 **一、 Maven 的重要性与作用** Maven 解决了传统构建工具存在的问题,通过约定优于配置的原则,统一项目结构,简化构建...

    《jmeter:菜鸟入门到进阶系列》

    jmeter 入门到进阶系列教程 jmeter 是一款优秀的开源性能测试工具,目前最新版本为 3.0 版本。它具有多种优点,如高可扩展性、精心简单的 GUI 设计、完全的可移植性和 100%纯 Java 等。jmeter 的安装非常简单,只...

    python题库,入门菜鸟级

    "python题库,入门菜鸟级"这个标题暗示了这是一份专门为Python初学者准备的练习资源,可能包含了一系列的基础编程题目,旨在帮助新手掌握Python的基本概念、语法和常用操作。 Python教育和考试标签表明,这些题目...

    hibernate框架基础教程适合新手

    Hibernate支持一级缓存(Session级别的)和二级缓存(SessionFactory级别的)。缓存能提高性能,但需注意并发控制和数据一致性问题。 9. **集合映射** Hibernate支持一对一、一对多、多对一和多对多关系映射,如...

    OpenStack菜鸟最佳入门宝典

    资源名称:OpenStack菜鸟最佳入门宝典   资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

Global site tag (gtag.js) - Google Analytics