在网上的资料很多,但是成功搭建一个Hibernate框架的很少,下面我将用一个简单的例子成功搭建一个Hibernate框架给大伙瞧瞧
该链接中有源代码和数据库,例子很简单,只是往数据库中的person表里面添加一组数据,链接:http://pan.baidu.com/s/1c0q8UZ2 密码:108m
也可以在我的github中下载,喜欢的话fork一下吧!https://github.com/zzzzw
在eclipse中配置Hibernate开发框架,本连接使用的数据库是MySQL
图一
1.在Java Web项目中添加Hibernate类库文件,也就是它的jar包,如图一中lib所示
2.添加Hibernate配置文件hibernate.cfg.xml,不建议大家下载hibernate tools,因为小博下载之后配置环境老是失败,最后才选择手动配置
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 <hibernate-configuration> 6 <session-factory> 7 <!-- 定义数据库连接驱动 --> 8 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 9 <!-- 定义数据库服务器地址 --> 10 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> 11 <!-- 数据库用户名 --> 12 <property name="hibernate.connection.username">root</property> 13 <!-- 数据库用户对应的密码 --> 14 <property name="hibernate.connection.password">123456</property> 15 <!-- 数据库对应的方言 --> 16 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 17 <!-- 在操作数据库时是否打印SQL语句 --> 18 <property name="hibernate.show_sql">true</property> 19 <!-- 打开 hbm2ddl.auto 选项将自动生成数据库模式(schema)- 直接加入数据库中 --> 20 <property name="hbm2ddl.auto">update</property> 21 <!-- 配置ORM映射文件 --> 22 <mapping resource="com/henu/domain/Person.hbm.xml"></mapping> //用来指定加载的映射文件路径及名称,本例加载的映射文件是com/henu/domain/Person.hbm.xml 23 </session-factory> 24 </hibernate-configuration>
3.创建持久化类(POJO)Person.java
备注:持久化类主要与数据表对应,在应用程序中操纵数据库的行为实质上转化为对持久化类的操作.
1 package com.henu.domain; 2 3 import java.io.Serializable; 4 import java.util.ArrayList; 5 import java.util.HashMap; 6 import java.util.HashSet; 7 import java.util.List; 8 import java.util.Map; 9 import java.util.Set; 10 11 public class Person implements Serializable { 12 private static final long serialVersionUID = 1L; 13 //主键属性 14 private int id; 15 //基本类型属性,对应于表中的列 16 private String name; 17 private int age; 18 private String major; 19 //集合属性,一般对应于表中的外键 20 //private List courses = new ArrayList(); 21 //private String[] courses; 22 //private Map courses = new HashMap(); 23 private Set courses = new HashSet(); 24 /** 25 * 无参构造方法 26 */ 27 public Person() 28 {} 29 /** 30 * 初始化全部属性的构造方法 31 * @param id 32 * @param name 33 * @param age 34 * @param major 35 * @param courses 36 */ 37 public Person(int id, String name, int age, String major, Set courses) { 38 super(); 39 this.id = id; 40 this.name = name; 41 this.age = age; 42 this.major = major; 43 this.courses = courses; 44 } 45 //setter和getter 46 public String getName() { 47 return name; 48 } 49 public void setName(String name) { 50 this.name = name; 51 } 52 public int getAge() { 53 return age; 54 } 55 public void setAge(int age) { 56 this.age = age; 57 } 58 public String getMajor() { 59 return major; 60 } 61 public void setMajor(String major) { 62 this.major = major; 63 } 64 public int getId() { 65 return id; 66 } 67 public void setId(int id) { 68 this.id = id; 69 } 70 /*public Map getCourses() { 71 return courses; 72 } 73 public void setCourses(Map courses) { 74 this.courses = courses; 75 } 76 */ 77 public Set getCourses() { 78 return courses; 79 } 80 public void setCourses(Set courses) { 81 this.courses = courses; 82 } 83 84 /*public List getCourses() { 85 return courses; 86 } 87 public void setCourses(List courses) { 88 this.courses = courses; 89 }*/ 90 }
4.定义ORM映射文件
备注:ORM映射文件的主要作用就是制定持久化类与数据表之间的映射关系;下面是Person类与数据表person的映射文件Person.hbm.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- class元素定义持久化类的具体包路径、关联的数据库及表名称 --> 5 <hibernate-mapping> 6 <class name="com.henu.domain.Person" table="person" catalog="test"> 7 <!-- id元素定义表的主键对应持久化类中的属性名称、数据类型 --> 8 <id name="id" type="java.lang.Integer"> 9 <!-- column元素定义表的主键 --> 10 <column name="id" /> 11 <!-- generator定义表的主键生成方式,这里采用native方式 --> 12 <generator class="native"></generator> 13 </id> 14 <!-- property元素定义持久化类的其它属性与表中列名之间的对照关系及数据类型等 --> 15 <property name="name" type="java.lang.String"> 16 <column name="name" length="20" not-null="true" /> 17 </property> 18 <property name="age" type="java.lang.Integer"> 19 <column name="age" /> 20 </property> 21 <property name="major" type="java.lang.String"> 22 <column name="major" length="45" /> 23 </property> 24 25 26 27 28 29 </class> 30 </hibernate-mapping>
5经过上面的步骤,本项目的Hibernate环境基本搭建完毕,并且建立了一个映射文件com/henu/domain/Person.hbm.xml,讲Person类和test数据库中的person表关联起来,下面建立测试类TestHibernate.java测试是否连接成功!
1 package com.henu.test; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.Transaction; 6 import org.hibernate.cfg.Configuration; 7 import com.henu.domain.Person; 8 public class TestHibernate { 9 public static void main(String args[]) 10 { 11 //实例化一个Configuration对象 12 Configuration cfg = new Configuration(); 13 /*Configuration对象加载Hibernate配置文件,并构建一个会话工厂SessionFactory*/ 14 SessionFactory sf = cfg.configure().buildSessionFactory(); 15 //由会话工厂打开一个会话 16 Session session = sf.openSession(); 17 //由会话开启一个事务对象 18 Transaction tx = session.beginTransaction(); 19 //实例化一个Person对象 20 Person tom = new Person(); 21 tom.setName("Tom"); 22 tom.setAge(29); 23 tom.setMajor("Computer Science"); 24 //持久化Person对象 25 session.save(tom); 26 tx.commit(); 27 session.close(); 28 } 29 }
运行程序,eclipse的控制台输出结果--------------------------->>>>>
查看Person表中时候添加了一条记录.如果有的话证明环境搭建成功!好吧,觉得不错的话右下角点“推荐”吧