首先要做一下准备工作,即获得所有的jar包和相应的工具。
1.myeclipse ---7.0 +
2.Oracle------(mysql)均可
3.数据库的驱动--本人用的是oracle的 ---ojdbc14.jar
4.到www.hibernate.org 网站上下载最新的hibernate框架,我用的是hibernate-distribution-3.3.2.GA,解压缩后,打开可以看到hibernate3.jar,这是hibernate的核心包,但是仅仅这一个包是不够的,他还需要别的依赖库。打开该文件下的lib下,会发现有一个required文件夹,里面都是所需的依赖库。但是还是少一个slf4.jar的实现类。
easy,下载一个即可,直接到slf4官方网址下载即可。下载解压之后,slf4j-simple-1.5.10.jar。最新的即可。然后此时这些包便构成了,应用hibernate的最小核心库。共八个文件。
他们是:antlr-2.7.6.jar,commons-collections-3.1.jar,dom4j-1.6.1.jar,hibernate3.jar,
javassist-3.9.0.GA.jar,jta-1.1.jar,slf4j-api-1.5.10.jar,slf4j-simple-1.5.10.jar
准备工作做完了后,就要进行实践了。
第一步,建立一个java project,名为chapter01_first
第二步,建立自己的书库库表格.可以通过pl/sql工具建立,也可以sql建立,均可。同时建立了一个序列,如果用mysql的就不用这样了,mysql中提供了自动增加的功能。
表格的sql语句为:
drop table guestbook; create table GUESTBOOK ( ID NUMBER(8) not null primary key, --留言id NAME VARCHAR2(20) not null, --留言者的姓名 PHONE VARCHAR2(20), --留言者的电话号码 EMAIL VARCHAR2(20), --留言者的email TITLE VARCHAR2(80) not null, --留言的标题 CONTENT VARCHAR2(2000), --留言内容 CREATE_TIME DATE not null --留言创建的日期 ); create sequence gb_seq increment by 1 start with 1 nocycle; --id 的序列
第三步,建立持久化类,与这个表对应:
package com.crazy.exmples; import java.util.Date; public class GuestBook { //对应数据库中的字段,该类叫做持久化类 private Integer id; private String name; private String email; private String phone; private String title; private String content; private Date createTime; getters and setters...... }
第四步,配置数据库,把hibernate.cfg.xml从下载的框架里的tutorials中拷贝出该文件,放在src目录下。
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:ora92</property> <property name="connection.username">scott</property> <property name="connection.password">tiger</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">2</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.Oracle9iDialect</property> <!-- Enable Hibernate's current session context --> <property name="current_session_context_class">thread</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <property name="format_sql">false</property> <!--指定数据库映射的配置文件所在路径--> <mapping resource="com\crazy\examples\GuestBook.hbm.xml"/> </session-factory> </hibernate-configuration>
第五步,配置映射关系,再从中拷贝出用于映射持久化类和数据库表的配置文件,user.hbm.xml。重新命名为GuestBook.hbm.xml,放在和GuestBook所在的包中。
<?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.crazy.examples"> <class name="GuestBook" table="GUESTBOOK" lazy="true"> <comment>Users may bid for or sell auction items.</comment> <id name="id"> <generator class="sequence"> <param name="sequence">gb_seq</param> </generator> </id> <property name="name" column="name" type="java.lang.String"/> <property name="email" column="email" type="java.lang.String"/> <property name="title" column="title" type="java.lang.String"/> <property name="content" column="content" type="java.lang.String"/> <property name="phone" column="phone" type="java.lang.String"/> <property name="createTime" column="create_time" type="java.util.Date"/> </class> </hibernate-mapping>
基本工作完毕。
最后是测试工作,编写一个HibernateText的测试类
package com.crazy.examples; import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class HibernateTest { public static void main(String[] args) { GuestBook gb = new GuestBook(); gb.setName("test"); gb.setEmail("test"); gb.setPhone("7758521"); gb.setTitle("test"); gb.setContent("test"); gb.setCreateTime(new Date()); //load the config files Configuration config = new Configuration(); config.configure(); SessionFactory sessionFactory = config.buildSessionFactory(); Session session = sessionFactory.getCurrentSession(); Transaction tx = session.beginTransaction(); session.save(gb); tx.commit(); sessionFactory.close(); } }
运行,可以考单console中会出现很多记录信息,并且还会显示调用的sql。
最后,查看数据库,看是否插入了词条数据。
代码中有很多<br>,要删除。第一次写这么长的文章,写给自己看的如果有朋友看,则更好。