说明:本文档,是和struts2+hibernate的整合示例。
lib下还有struts2的jar包,本示例没有显示。struts2的搭建参考struts2的环境搭建
一下载hibernate的jar包,并将相关jar包导入的项目web-inf的lib下
少了一个jar包,报错
二:配置hibernate.cfg.xml文档
1 <!DOCTYPE hibernate-configuration PUBLIC 2 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 4 5 <hibernate-configuration> 6 <session-factory > 7 <!-- 全局开发配置 --> 8 9 <!-- hibernate 会自动生成sql。 为了能够屏蔽 数据库的差异。 需要配置 数据库方言--> 10 <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 11 12 <!-- 如果数据库中无相应的表的话,则自动生成一个与po对应的表 --> 13 <property name="hibernate.hbm2ddl.auto">update</property> 14 15 <!-- 在服务器后台打印出hibernate映射的sql语句 --> 16 <property name="hibernate.show_sql" >true</property> 17 <!-- sql语句格式化输出 --> 18 <property name="format_sql">true</property> 19 20 21 <!-- 数据库连接信息 --> 22 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 23 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> 24 <property name="hibernate.connection.username">root</property> 25 <property name="hibernate.connection.password">1234</property> 26 27 28 29 <!-- java和数据的桥梁,映射java的实体类和数据库中的表 --> 30 <mapping resource="com/bjsxt/shangxiaofei/po/User.hbm.xml"></mapping> 31 32 </session-factory> 33 </hibernate-configuration>
三:配置实体类User.hbm.xml文档作为映射桥梁
1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping 6 package="com.bjsxt.shangxiaofei.po"><!-- 实体类包名 --> 7 8 <class name="User" table="t_user"> 9 10 11 <!-- 主键递增 --> 12 <id name="id" column="id"> 13 <generator class="native"></generator> 14 </id> 15 16 <!-- 实体类中的属性名name映射成数据库表中的字段名column --> 17 <property name="uname" column="uname"></property> 18 <property name="pwd" column="pwd"></property> 19 <property name="sex" column="sex"></property> 20 21 </class> 22 23 </hibernate-mapping>
四:编写sessionFactoryUtil工具类,用来加工session
1 package com.bjsxt.shangxiaofei.util; 2 3 4 5 import org.hibernate.Session; 6 import org.hibernate.SessionFactory; 7 import org.hibernate.cfg.Configuration; 8 9 public class SessionFactoryUtil { 10 //session工厂 11 private static SessionFactory sessionFactory; 12 13 /** 14 * 静态初始块,用来初始化类的静态属性 15 */ 16 static{ 17 //将hibernate.cfg.xml文档读入内存中 18 Configuration configuration=new Configuration(); 19 configuration.configure(); 20 21 //初始化sessionFactory 22 sessionFactory=configuration.buildSessionFactory(); 23 } 24 25 //hibernate的session工厂 26 public static SessionFactory getSessionFactory(){ 27 return sessionFactory; 28 } 29 30 //hibernate的Session 31 public static Session getSession(){ 32 return sessionFactory.openSession(); 33 } 34 35 public static void main(String[] args) { 36 //可以通过运行此main方法,测试环境是否搭建好 37 } 38 }
五:测试,往数据库中插入一条数据
1 package com.bjsxt.shangxiaofei.dao; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 6 import com.bjsxt.shangxiaofei.po.User; 7 import com.bjsxt.shangxiaofei.util.SessionFactoryUtil; 8 9 public class UserDao { 10 public void addUser(){ 11 //获取java连接数据库的session对象,对jdbc的封装 12 Session session=SessionFactoryUtil.getSession(); 13 //事务的开启 14 session.beginTransaction(); 15 16 User user=new User(); 17 user.setUname("dsfasdsafsdaadf"); 18 user.setPwd("1sdafdf5"); 19 user.setSex("1"); 20 21 //往数据库中保存一个user 22 session.save(user); 23 //提交事务 24 session.getTransaction().commit(); 25 26 } 27 public static void main(String[] args) { 28 //测试 29 UserDao userDao=new UserDao(); 30 userDao.addUser(); 31 } 32 }