有前面一节我们知道简答的web页面加入Struts的运行效果和运行机制,现在我们在上面给的基础上加入Hibernate框架,对hibernate最基本的功能与配置进行介绍。为了更好的体现出层次比如Struts的MVC形式等,我们知道当运行到registerAction后会调用后台的execute方法,在execute中会实现数据库的持久化,以及使用JDBC访问数据库,对数据进行操作,当我们加入Hibernate后我们需要实现的ORM的框架机制,因此我们抽象出Service层和DAO层,Service层是我们的控制服务层,而DAO层可以实现跨数据库的具体操作与链接。
加入Hibernate后,web.xml和Struts.xml的配置都不需要任何的改动,我们首先要引入Hibernate的JAR包,然后创建hibernate.cfg.xml文件文件的格式我们可以查看Hibernate的API来点击打开链接。代码如下:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:hsqldb:hsql://localhost:3306</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<mapping resource="com/thridProject.model/user.hbm.xml"/>
</session-factory>
</hibernate-configuration>
从上面的配置中我们可以看到我们在前面只用Struts时的JDBC链接可以在上面的属性中直接配置,所以我们加入hibernate后就不要在自己写JDBC的链接等;Mapping中的resource可以是我们使用xml的配置进行关系标的映射,现在我们在创建user.hbm.xml也可以在hibernate的api中进行查找:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.thridProject.model">
<class name="User" table="T_user">
<id name="username" ></id>
<property name="password"></property>
</class>
</hibernate-mapping>
这里如果没有设置property将会传递不进参数。然后是action层的代码如下:
package com.thridProject.action;
import com.opensymphony.xwork2.ActionSupport;
import com.thridProject.model.User;
import com.thridProject.service.UserService;
public class RegisterAction extends ActionSupport {
/**
* author 张春蕾 2013-11-17
*/
private static final long serialVersionUID = 1L;
private User user;
private UserService userService = new UserService();
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute(){
if(userService.isExist(user)){
return "true";
}else{
return "false";
}
}
}
我们在userAction层用到了userService层代码如下:
package com.thridProject.service;
import com.thridProject.dao.UserDao;
import com.thridProject.impl.UserDaoImpl;
import com.thridProject.model.User;
public class UserService {
private UserDao userDao;
public UserService(){
userDao = new UserDaoImpl();
}
public boolean isExist(User user){
return userDao.isExist(user);
}
}
在这层用到了userDao层的代码:
package com.thridProject.dao;
import com.thridProject.model.User;
public interface UserDao {
public boolean isExist(User user);
}
我们通过userDaoImpl层来实现UserDao,根据不同的UserDaoImpl层可以实现跨数据库平台:
package com.thridProject.impl;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.thridProject.dao.UserDao;
import com.thridProject.model.User;
public class UserDaoImpl implements UserDao{
@SuppressWarnings("unchecked")
public boolean isExist(User user){
boolean exist = false;
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
// List<User> li = session.createSQLQuery("select * from T_USER where username='"+
// user.getUsername()+"'").addEntity(User.class).list();
List<User> li = session.createQuery("from User u where u.username='"+
user.getUsername()+"'").list();
session.getTransaction.commit();
session.close();
sf.close();
if(li.size()!=0){
User user1 = li.get(0);
if(user1.getPassword().equals(user.getPassword())){
exist = true;
}
}
return exist;
}
}
上面注释的代码是使用了createQuery方法和createSQLQuery方法的区别:
点击打开链接,以上都能实现,实现这些以后,就在原来Struts的基础上加入了Hibernate当然,我们这儿的orm是通过xml配置完成,现在我们也可以使用注释来完成ORM配置。
分享到:
相关推荐
Hibernate的加入,则为系统的数据处理提供了强有力的保障。它作为一款优秀的ORM框架,能够轻松实现对象与数据库之间的映射,简化了数据访问的复杂度。同时,Hibernate还提供了丰富的数据查询和事务管理功能,确保...
* 购物车管理:用户可以将心仪的图书加入购物车,并随时查看购物车中的图书。 * 订单管理:用户可以查看自己的订单信息,包括订单状态、订单详情等。 2. **管理员模块:** * 图书管理:管理员可以添加、编辑和...
SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久...
#DCnetworkDisk 网盘系统基于SpringMVC、MySQL、Redis的网盘系统##使用到的技术:SpringMVC: MVC框架Tomcat: web容器Hibernate: ORM框架quartz定时任务,用来定时同步数据库和用户文件夹的文件##计划加入的功能:非...
9.5.2 创建StrutsPageDemo项目,加入Hibernate开发功能 190 9.5.3 反向工程生成DAO层 190 9.5.4 编写分页应用层 191 9.5.5 加入Struts表现层和控制层 192 9.5.6发布,运行并测试 196 9.5.7 练习:如何用Hibernate+...
14.3 向现有Web项目加入Web Service功能 252 14.4 创建直接调用Internet中的Web Service的客户端 252 14.4.1 创建客户端WeatherWSClient项目 253 14.4.2 使用WSDL生成客户端代码 253 14.4.3 创建Web Service客户端...
本次Web应用开发环境:Eclipse+Mysql5.1+tomcat7.0; struts2+hibernate3+spring3 导入项目后,右键项目Build Path-----Configure Build Path,把Libraries中的相关组件路径改成自己电脑的即可运行。 用户分为管理员和...
而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。 3、 系统的易用性和...
而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。 3、 系统的易用性和...
还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后...
还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后...
还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后...
还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译...
还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译...
还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译...
还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后...
还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后...
JBPM文档1、 加入JBPM支持包下载jbpm-starters-kit-3.1.4在项目的classPath中加入jbpm-3.1.4.jar、jbpm-identity-3.1.2.jar、jbpm-webapp-3.1.2.jar,jbpm-3.1.4.jar必须加入,是JBPM的核心包;bpm-identity-3.1.2....