Hibernate入门实例(3)
- 首先我们得下载Hibernate的需要的jar包.
- 下载的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) )
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 }
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的规范,我以后会发表博客详细说明.
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)
最后我还是觉得我应该把我学习hibernate的一个感觉:Hibernate是我学习java开源框架中,文档和帮助教程做得最好,最全,而且有中文的文档,所以我们在开发中遇到问题第一个首先的查阅官方文档.