准备阶段:
Hibernate可用于各种类型的项目,要在项目中使用Hibernate,需要下载Hibernate的API.
通过http://www.hibernate.org/网址可以下载到Hibernate的API和一些帮助文档.
点击downloads —> release bundles即可下载
下载解压后,在lib -> required目录下可找到项目中需要的jar包(API).
官网上好像没有API的帮助文档,大家可以到这里下载:http://115.com/file/bensl2vy#hibernate api帮助文档.chm
开发阶段:
新建一个JAVA项目,目录结构如下:
将准备的jar包引入到项目中。
hibernate.cfg.xml:(Hibernate的配置文件,放在项目的src目录下):
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 <!-- Generated by MyEclipse Hibernate Tools. --> 7 <hibernate-configuration> 8 9 <session-factory> 10 <!-- 设置驱动类 --> 11 <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 12 <!-- 设置连接池默认个数 --> 13 <property name="connection.pool_size">20</property> 14 <!-- 设置JDBC URL --> 15 <property name="connection.url">jdbc:mysql://localhost:3306/book</property> 16 <!-- 设置数据库用户名 --> 17 <property name="connection.username">username</property> 18 <!-- 设置数据库用户密码 --> 19 <property name="connection.password">passwrod</property> 20 <!-- 设置SQL方言 --> 21 <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 22 <!-- 设置是否显示SQL语句 --> 23 <property name="show_sql">true</property> 24 <!-- 设置格式化SQL语句 --> 25 <property name="format_sql">true</property> 26 <property name="current_session_context_class">thread</property> 27 28 <mapping resource="com/sunflower/bean/Person.hbm.xml" /> 29 </session-factory> 30 31 </hibernate-configuration>
这里配置的是MySQL数据库的驱动和连接,在开始的时候忘了加26行,结果调试的时候出错,得不到session,关于这个标签的使用,请参考如下文章:http://blog.sina.com.cn/s/blog_5ecfe46a0100e467.html 第28行是对象关系映射文件的配置.
Person.java:(人的实体类,对应到关系数据库中的blog表)
1 package com.sunflower.bean; 2 3 import java.io.Serializable; 4 5 /** 6 * 博客用户的实体类 7 * 8 * @author hanyuan 9 * @time 2012-7-8 下午11:53:23 10 */ 11 public class Person implements Serializable { 12 private Integer id; 13 private String username; 14 private String password; 15 private String caption; 16 private String content; 17 18 public Integer getId() { 19 return id; 20 } 21 22 public void setId(Integer id) { 23 this.id = id; 24 } 25 26 public String getUsername() { 27 return username; 28 } 29 30 public void setUsername(String username) { 31 this.username = username; 32 } 33 34 public String getPassword() { 35 return password; 36 } 37 38 public void setPassword(String password) { 39 this.password = password; 40 } 41 42 public String getCaption() { 43 return caption; 44 } 45 46 public void setCaption(String caption) { 47 this.caption = caption; 48 } 49 50 public String getContent() { 51 return content; 52 } 53 54 public void setContent(String content) { 55 this.content = content; 56 } 57 58 }
第12~16行中的属性对应到数据库中的blog表的字段,其中id是主键索引.
Person.hbm.xml:(对象关系映射配置文件)
1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 5 6 <hibernate-mapping> 7 <!-- 设置实体类与数据库中表的对应关系 --> 8 <class name="com.sunflower.bean.Person" table="blog"> 9 10 <id name="id" type="java.lang.Integer"> 11 <column name="id"></column> 12 <!-- 将逐渐设置为自增 --> 13 <generator class="increment"></generator> 14 </id> 15 16 <property name="username" type="java.lang.String" not-null="true"> 17 <column name="username"></column> 18 </property> 19 20 <property name="password" type="java.lang.String"> 21 <column name="password"></column> 22 </property> 23 24 <property name="caption" type="java.lang.String"> 25 <column name="caption"></column> 26 </property> 27 28 <property name="content" type="java.lang.String"> 29 <column name="content"></column> 30 </property> 31 32 </class> 33 </hibernate-mapping>
<class name="com.sunflower.bean.Person" table="blog">表示对象对应的表,<id>字段是必须要有的,表示主键。开始的时候没有加第13行,结果调试出错,需要加上<generator>标签,这里设置为自增类型.关于<generator>标签的使用,参考下列文章:http://sarin.iteye.com/blog/605712
这个配置文件的是以hbm.xml结尾的,名字建议命名为对象名.hbm.xml,并且和实体类对象放在同一个包下,这样比较好找.
Test.java:(调用Hibernate API 插入数据)
1 package com.sunflower.main; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.Transaction; 6 import org.hibernate.cfg.Configuration; 7 8 import com.sunflower.bean.Person; 9 10 public class Test { 11 @SuppressWarnings("deprecation") 12 public static void main(String[] args) { 13 // 读取Hibernate的配置信息 14 Configuration config = new Configuration(); 15 config.configure(); 16 17 // 读取配置里面的SessionFactory 18 SessionFactory sessionFactory = config.buildSessionFactory(); 19 Session session = sessionFactory.getCurrentSession(); 20 Transaction transaction = session.beginTransaction(); 21 22 Person person = new Person(); 23 person.setUsername("邓光桥"); 24 person.setPassword("123"); 25 person.setCaption("Hibernate"); 26 person.setContent("Hibernate 入门实例"); 27 28 // 提交事务 29 session.save(person); 30 transaction.commit(); 31 sessionFactory.close(); 32 } 33 }