`

【学习笔记】Hibernate配置进行数据库操作

阅读更多

让我们先来看一下Hibernate配置文件内容:

   

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

	<session-factory>

		<!-- Database connection settings -->
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost/mydata</property>
		<property name="connection.username">root</property>
		<property name="connection.password">chengfei</property>

		<!-- JDBC connection pool (use the built-in) -->
		<!--   <property name="connection.pool_size">1</property>-->

		<!-- SQL dialect 方言 将SQL语句翻译成对应的数据库中-->
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

		<!-- Enable Hibernate's automatic session context management -->
		<!--<property name="current_session_context_class">thread</property>-->

		<!-- Disable the second-level cache  -->
		<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

		<!-- Echo all executed SQL to stdout //回应所有的执行SQL语句-->
		<property name="show_sql">true</property>

		<!-- Drop and re-create the database schema on startup //是否自动生成建表语句 -->
		<property name="hbm2ddl.auto">validate</property>

		<mapping class="com.cf.model.Student"/>
	</session-factory>

</hibernate-configuration>

  

我们来分析一下这个配置文件(主要是session-factory节点的内容):

   

 <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    从这个属性的name就能够知道,该节点的值代表的是要连接的数据库驱动包。如MySQL的jdbc.mysql.Driver等;

 

       <property name="connection.url">jdbc:mysql://localhost/mydata</property>
    这是连接数据库的URL:如MySQL的jdbc:mysql://localhost/库名


        <property name="connection.username">root</property>
    这是连接到数据库的用户名


        <property name="connection.password">chengfei</property>
    连接到数据库的密码

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

     这是Hibernate连接池的配置,即在连接池中存放的最大可用连接数。不过Hibernate自身都知道连接池的功能效率较差,所以我们在做产品的项目时,应该使用第三方的容器进行连接池的配置!

     在测试阶段还是可以小用一下。

        <!-- SQL dialect -->
       <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
     dialect 方言的意思,该配置是告诉Hibernate将使用哪种数据库的语言进行数据库操作(也可以说是将要支持的SQL语句转换成各类数据库所识别的SQL语句)

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

    从说明中来看,表示的是自动管理当前的会话上下文,默认是thread。该参数定义了应该采用哪个 org.hibernate.context.CurrentSessionContext实现。

    具体的作用还未体验到……跳过

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

    配置二级缓存,同样未深入研究,待述……

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

    这个配置很关键,是否响应所有被执行的SQL语句。默认为true,即将执行成功的SQL语句输出到控制台上。

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">update</property>

    hbm2ddl,在SessionFactory创建时,自动检查数据库结构,或者是将数据库scheme(图解)的DDL导入到数据库中。

    有四个属性值:create|create-drop|update|validate;

    create:会自动创建自定义JavaBean的同名物理表。

    create-drop:除了与create的功能外,不同的在于当我们手动(显示)关闭SessionFactory时,会删除数据中的scheme;

    validate:不会自动创建表,会提示“Exception in thread "main" org.hibernate.HibernateException: Missing table: 表的名称”;

    我的习惯是写update:除了与create具有一样的功能外,并且在表的字段改变时,将会自动进行更新。

        <mapping resource="com/cf/model/Student.hbm.xml" />

    最后一个则是将该表的数据源映射到哪一个配置文件中!

       如果使用的是Annotation,那映射的部分则要改成:

        <mapping class="com.cf.model.Studentr"/>

 

  配置好hibernate的文件,我们来看看JavaBean的代码:

   

package com.cf.model;

public class Student {
	private int id;
	private String name;
	private int age;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

 

   很简单,就是一个普通的JavaBean,关键的是在下面的xml文件。

  

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.cf.model">
	<class name="Student" table="student"><!-- 若实体类的名称与表名相同,table可省略 -->
		<id name="id" column="id"></id><!-- name属性指定的是类的属性GET方法 -->
		<property name="name"></property>
		<property name="age"></property>
	</class>
</hibernate-mapping>

   在对应的JavaBean类的同一级目录中,创建一个名为XXX.hbm.xml的配置文件。XXX与JavaBean的名称相同。

   如上面的代码一样。告诉hibernate所要操作的数据库的表所映射的类在哪个包下。

      class name表示的是JavaBean所对应的名称。而table与column就是具体的表和字段了。(当表名与类名相同时,可省略不写,字段名也如此)。

  

   关于hibernate与数据库的操作方式,今天只写了XML文件配置的一种方式。其实当下Annotation的配置方式与XML配置相比,还更流行,今天迟了,下次再与大家分享! 

 

分享到:
评论

相关推荐

    hibernate 学习笔记

    hibernate 学习笔记: 了解hibernate的基本概念 配置hbm.xml cfg.xml 快速入门案例3: 从domain-xml-数据库表 hibernate的核心类和接口 openSession()和getCurrentSession() 线程局部变量模式 transaction事务 在web...

    Hibernate3.1_学习源码

    01 01Hibernate_Handwork : 手工配置使用Hibernate,其中详细标了Hibernate进行持久化的一些过程,因为是Hibernate的入门实例,所以注释很详细,其中有session的关闭后重建问题。 02 02Hibernate_UseMyEclipse: 利用...

    Hibernate 的学习笔记

    教程 非常详细.适合初学者 配置信息 连接数据库.与Spring整合开发等

    hibernate的详细学习笔记

    Hibernate®KUÏ:(ë wcÛÝ) ®]w(ǦWPíìvÇ) 1myeclipseêCAHibernate!D«§(§t.uQ!Qì+!jar§i@m  i¨wtm !1 ) hibernateØÝsM|´ñhibernate.cfg.xmlD«(oj 1f#D«äÃ) UÏ7wgìªÂ.uQ° ...

    hibernate笔记

    2 学习建User-library-hibernate,并加入相应的jar包 6 3 引入mysql的JDBC驱动包 6 4 在mysql中建立对应的数据库以及表 6 5 建立hibernate 配置文件hibernate.cfg.xml 6 6 建立Student 类 6 7 建立Student 映射文件 ...

    Java/JavaEE 学习笔记

    Hibernate学习笔记..........180 第一章 Hibernate入门.....................180 第二章 对象/关系映射基础.............183 第三章 关联关系映射......................185 第四章 操纵持久化对象....................

    jbpm4.4学习笔记

    二、配置Hibernate相关文件: 44 三、整合需要jbpm提供的jar包: 44 17 HelloWorld 45 Xml: 45 Code: 45 18 从数据库中取出xml文件和png图片 48 19 向页面输出图片 49 20 页面显示图片 50 21 获取已加载到数据库中的...

    J2EE学习笔记(J2ee初学者必备手册)

    Hibernate学习笔记..........180 JavaEE@xuxiang 3 Java/JavaEE学习笔记Jonny xuxiang5612@sina.com 第一章 Hibernate入门.....................180 第二章 对象/关系映射基础.............183 第三章 关联关系映射....

    AppFuse学习笔记(J2EE入门级框架)

    为了简化开发,预定义好了一套目录结构、基类、用来创建数据库、配置Tomcat、测试部署应用的 Ant 任务,帮助快速自动生成源程序和自动维护部分配置文件。 AppFuse2.0重构了AppFuse1.0,转到Maven2和Jdk1.5。

    appfuse 学习笔记

    为了简化开发,预定义好了一套目录结构、基类、用来创建数据库、配置Tomcat、测试部署应用的 Ant 任务,帮助快速自动生成源程序和自动维护部分配置文件。 AppFuse2.0重构了AppFuse1.0,转到Maven2和Jdk1.5。

    Java学习笔记-个人整理的

    {13.3}连接Oracle数据库及操作}{192}{section.13.3} {13.4}批处理模式}{195}{section.13.4} {13.5}分页查询}{196}{section.13.5} {13.5.1}MySQL}{198}{subsection.13.5.1} {13.6}连接池}{199}{section.13.6} {...

    struts1+hibernate 简单的增删改查

    最近在学习hibernate 就动手做个简单的结合了struts1的图书的增删改查,重点处做了注释,相信看起来简单易懂 ...呵呵 如果你还不知道怎么配置hibernate 可以下载我的"hibernate入门" 手把手教...

    ibatis学习笔记

    iBatis是个像Hibernate, JDO,...它是个轻量级的框架并且持久性API适合持久化POJO.iBatis也与Hibernate, JDO不同,因为它使用存储过程和现有的SQL来处理数据库. 本文我们将向你讲述如何配置iBatis来运行一个个小型程序。

    mybatis学习笔记

    1.5 创建mysql数据库 5 1.6 Mybatis入门程序 5 1.6.1 需求 5 1.6.2 第一步:创建java工程 6 1.6.3 第二步:加入jar包 6 1.6.4 第三步:log4j.properties 6 1.6.5 第四步:SqlMapConfig.xml 6 1.6.6 第五步:po类 7 ...

    spring-boot-test:springboot学习笔记!

    Springboot的学习记录 此代码库主要记录本人对Springboot的学习...引入Mysql数据库,引入Jpa管理数据库,使用Hibernate自动建表。 使用Jpa对数据库进行增加、删除、修改和查询,全部使用JpaRepository接口的方法实现

    javahibernate源码-spring-boot-blog:用Java编写的博客源代码

    hibernate 源码 简介 程序基于,为蓝眼博客打个广告 蓝眼博客是 中的第二个 可用于快速搭建个人博客。 可以作为私人笔记使用。 支持多用户写作,评论,邮件通知等核心功能。 蓝眼博客力求小而精,可以作为团队内部或...

    java文集

    ext学习笔记一 小试iBatis RIA(Rich Internet Application)的现状和未来 Java应用中域名解析不过期的解决方法 Java编程那些事儿45—数组使用示例1 一步步熟悉OFBiz 用Java做客户端调用.NET写...

    jive.chm

    2 jcs学习笔记 3 关于Hibernate的Cache问题 4 用缓冲技术提高JSP应用的性能和稳定性 5 SwarmCache入门 &lt;br&gt; 源代码研究 1 Jive中的全局配置 2 Jive源代码情景分析-index....

    百度地图毕业设计源码-MyStudyNote:我的学习历程笔记

    采用当前软件行业比较流行的JavaWeb技术,运用MVC分层设计思想,使用Hibernate+Spring+SpringMVC来搭建环境,设计实体类(entity)、数据库访问类(dao)、服务类(service)、控制层类(web/controller)配置web.xml...

Global site tag (gtag.js) - Google Analytics