Hibernate框架搭建与实战应用初级
一、构建Hibernate框架要先导入jar包需要导入的jar包有
1、commons-fileupload-1.2.1.jar
2、commons-logging-1.0.4.jar
3、freemarker-2.3.15.jar
4、ognl-2.7.3.jar
5、struts2-core-2.1.8.jar
6、xwork-core-2.1.6.jar
以上6个是搭建struts2框架必须要导入的jar包;三大框架并不冲突,而是各有各的作用。下面是Hibernate的jar包
1、antlr-2.7.6.jar
2、classes12.jar
3、commons-collections-3.1.jar
4、commons-dbcp.jar
5、dom4j-1.6.1.jar
6、ehcache-1.5.0.jar
7、hibernate3.jar
8、javassist-3.12.0.GA.jar
9、jta-1.1.jar
10、log4j-1.2.15.jar
11、slf4j-api-1.5.0.jar
12、slf4j-log4j12-1.5.0.jar
将这些jar包全部复制粘贴到lib目录下,然后在src下建hibernate的相关文件
二、构建hibernate.cfg.xml
<?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>
<!-- oracle数据库驱动 -->
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<!-- 连接 oracle 的数据库字符串 -->
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:oracle
</property>
<property name ="connection.username" >
scott
</property>
<property name ="connection.password" >
scott
</property>
<!-- 数据库 方言针对数据库不同的版本,在sql语法上有不同 -->
<property name="dialect">
org.hibernate.dialect.OracleDialect
</property>
<!-- 在控制台打印底层执行的sql命令 -->
<property name="show_sql">true</property>
<!-- -->
<property name="format_sql">true</property>
<!-- 把实体类和表的影射文件写在下面,有几个写几个 -->
<mapping resource="com/adminsys/entity/Admin.hbm.xml"/>
</session-factory>
</hibernate-configuration>
以上是我的hibernate.cfg.xml文件代码
注意自己的数据库名字,数据库的登录名,密码,还有自己的实体类的位置然后去配置自己的Admin.hbm.xml
三、下面是我的Admin.hbm.xml的代码
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 把实体类admin和数据库中的表做映射 -->
<class name="com.adminsys.entity.Admin" table="ADMIN">
<!-- id标签是用来影射主键的,name是实体类中对应主键的属性名
column是数据库表中主键段的名字
-->
<id name="id" column="id" >
<!-- 主键生成的方式 -->
<generator class="sequence"><param name="sequence">admin_seq</param></generator>
</id>
<!-- putong属性与普通字段的影射 -->
<property name="name" column="name"/>
<property name="sex" column="sex"/>
<property name="date" column="birthday"/>
<property name="telphone" column="telphone"/>
</class>
</hibernate-mapping>
完成实体类与数据库的影射
四、构建方法,实现数据的持久化操作,增删改查
package com.adminsys.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class HIBUtil {
/**
* 创建session工厂
*
* @Description:@return
*/
public static SessionFactory getSessionFactory() {
// 加载hibernate的主配置文件
Configuration config = new Configuration().configure();
return config.buildSessionFactory();
}
/**
* 获取会话
*
* @Description:@return
*/
public static Session getSession() {
return getSessionFactory().openSession();
}
public static boolean add(Object o) {
boolean flag = false;
Session session = null;
Transaction ts = null;
try {
// 获取会话
session = getSession();
// 开启事物
ts = session.beginTransaction();
// 持久化操作,调用hibernate的save方法添加数据
session.save(o);
// 提交事物
ts.commit();
flag = true;
} catch (Exception e) {
e.printStackTrace();
// 如果发生异常,事物回滚
ts.rollback();
} finally {
// 关闭session
if (session != null) {
session.close();
}
}
return flag;
}
}
里面只写了一个添加数据的方法,其他方法可以自己尝试
五、调用这个方法实现数据的增删改查
public class AdminDaoImpl implements AdminDao {
@Override
public boolean addAdmin(Admin admin) {
return HibUtil.add(admin);
}
@Override
public List<Admin> getAllAdmin() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean deletAdmins(String ids) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean getAdminsByName(Admin admin) {
// TODO Auto-generated method stub
return false;
}
}