Hibernate入门实例(3)

  1. 首先我们得下载Hibernate的需要的jar包.
  2. 下载的Hibernate会有很多jar包,一般有22或者23个左右,但到底我们需要的包有哪些呢?

    hibernate3.jar:

      这个是Hibernate的核心包,所以是必须的jar包.

    cglib-2.2.jar:

      cglig库,Hibernate用它来实现PO字节码的动态生成,非常核心的包,所以也是必须的包

    dom4j.jar

      dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j,直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包,Hibernate用它来读写配置文件。

    commons-collections.jar:

      Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大。必须使用的jar包。

    javassist-3.12.0.GA.jar:

      这个包也是必须的.

    jta-1.1.jar:

      当使用JTA规范时,必须加入,JTA全称是 Java Transaction API (java 事务 API),一般情况下也是必须的.

    slf4j-api-1.6.1.jar:

      这个包是必须的,因为在Hibernate的核心包中多处用到了,比如Configuration.class中用到了.

    slf4j-nop-1.6.1.jar:

      这个包是slf4j的实现类,所以也是必须的,注意实现类得和slf4j的版本要匹配.

    hibernate-jpa-2.0-api-1.0.1.Final.jar:

    Hibernate使用Annotation(注解)需加,所以说如果不用Annotation的话就不用加的.

(以上的包是Hibernate3.5以上的版本)

  3.  数据库脚本

      我们使用mysql数据库,创建db_person,创建tb_student表,脚本如下:

 

 1 drop database if exists db_Person;
2 create database db_Person;
3 use db_Person;
4 drop table if exists tb_student;
5 create table tb_student
6 ( id int(4) not null,
7 name varchar(20) not null,
8 age int(4) null,
9 primary key(id)
10 )ENGINE=InnoDB DEFAULT CHARSET=gbk ROW_FORMAT=REDUNDANT;

4.  Hibernate的配置:

    通常hibernate的配置文件有两种一种是以xml,另外一种是以properties文件来进行配置,同样,Hibernate的配置文件有两种:一种是主配置文件(主要配置数据库相关的和映射文件的位置等),另外一种就是配置映射文件(数据库中的表和程序中的映射)

 

从上图我们可以看出主配置文件是hibernate.cfg.xml(这个名字最好就采用,因为在Hibernate中的Configuration中的configure()方法默认加载的就是hibernate.cfg.xml,并且一定要放在src目录下,当然如果你想在这些方面创新也是可以的,因为configure()还有一个重载方法configure(String resource) )

Hibernate源码中的Configuration中configure()方法代码
1 /**
2 * Use the mappings and properties specified in an application
3 * resource named <tt>hibernate.cfg.xml</tt>.
4 */
5 public Configuration configure() throws HibernateException {
6 configure( "/hibernate.cfg.xml" );
7 return this;
8 }
下面关于hibernate.cfg.xml里面的详细配置信息:

 

 1 <?xml version=\'1.0\' encoding=\'utf-8\'?>
2 <!DOCTYPE hibernate-configuration PUBLIC
3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
5
6 <hibernate-configuration>
7
8 <session-factory>
9
10 <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
11 <property name="connection.url">jdbc:mysql://localhost:3306/db_Person</property>
12 <property name="connection.username">root</property>
13 <property name="connection.password">password</property>
14
15 <!-- JDBC connection pool (use the built-in) -->
16 <property name="connection.pool_size">1</property>
17
18 <!-- SQL dialect -->
19 <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
20
21
22 <!-- Disable the second-level cache -->
23 <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
24
25 <property name="current_session_context_class">thread</property>
26
27 <!-- Echo all executed SQL to stdout -->
28 <property name="show_sql">true</property>
29
30
31 <mapping resource="com/liuyi/bean/student.hbm.xml"/>
32 <mapping class="com.liuyi.bean.Teacher"/>
33
34 </session-factory>
35
36 </hibernate-configuration>

 


这里hibernate.cfg.xml是根据hibernate-configuration-3.0.dtd中的规范来定的,其中dtd是Document Type Definition(文档类型定义),关于dtd的规范,我以后会发表博客详细说明.

 

  hibernate.cfg.xml中的详细说明

 

    对于这个hibernate.cfg.xml,我们不需要强行记住它是怎么写(也就是不要求,自己能够完整写出),但我们要求理解里面每项的配置的作用和意思.

 

    property是指属性;name是指属性的名称;mapping是指映射文件;resource指文件的完整路径(这里是以相对的位置);class是指类的位置(Annotation的映射)
 
    connection.driver_class:连接数据库所需驱动包.(如mysql的jdbc包等)

    connection.url:连接数据库的URL

    connection.username:数据库登录的用户名

    connection.password:用户登录数据库的密码

    connection.pool_size:数据库连接池的大小

    dialect:数据库所使用的方言(hibernate支持几乎所有数据库的方言)

    cache.provider_class:设置二级缓存的启用/禁用

    current_session_context_class:为”当前” Session指定一个(自定义的)策略

    show_sql:是否在控制台打印sql语句(true/false)

    format_sql:在日志或控制台输出更漂亮的sql语句(true/false)

  以上仅仅是程序中使用到的配置的一些说明,这些还是远远不够,在第(4)篇中我会提供一个详细的关于hibernate.cfg.xml中各项配置的说明
 

    最后我还是觉得我应该把我学习hibernate的一个感觉:Hibernate是我学习java开源框架中,文档和帮助教程做得最好,最全,而且有中文的文档,所以我们在开发中遇到问题第一个首先的查阅官方文档.

 

版权声明:本文为Marinesky原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Marinesky/articles/2245101.html