1. 程式人生 > >DAO層注入HibernateTemplate的兩種方式

DAO層注入HibernateTemplate的兩種方式

-------------------------siwuxie095

DAO 層注入 HibernateTemplate 的兩種方式

方式一:普通方式

具體實現如下:

1)編寫頁面

add.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">

<title>新增使用者</title>

</head>

<body>

<formaction="${pageContext.request.contextPath }/user_add.action"method="post">

使用者名稱:<inputtype="text"name="username"/>

地址:<inputtype="text"name="address"/>

<inputtype="submit"name="提交"/>

</form>

</body>

</html>

succ.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">

<title>新增成功</title>

</head>

<body>

<h1>新增成功!<ahref="${pageContext.request.contextPath }/add.jsp">

繼續新增</a></h1>

</body>

</html>

2)編寫實體類

User.java:

package com.siwuxie095.entity;

public class User {

Integer uid;

String username;

String address;

public Integer getUid() {

return uid;

}

publicvoid setUid(Integer uid) {

this.uid = uid;

}

public String getUsername() {

return username;

}

publicvoid setUsername(String username) {

this.username = username;

}

public String getAddress() {

return address;

}

publicvoid setAddress(String address) {

this.address = address;

}

@Override

public String toString() {

return"User [uid=" + uid + ", username=" + username +

", address=" + address + "]";

}

}

3)在Hibernate 對映配置檔案中進行配置

User.hbm.xml:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

<hibernate-mapping>

<classname="com.siwuxie095.entity.User"table="t_user">

<idname="uid"column="uid">

<generatorclass="native"></generator>

</id>

<propertyname="username"column="username"></property>

<propertyname="address"column="address"></property>

</class>

</hibernate-mapping>

4)在Hibernate 核心配置檔案中進行配置

hibernate.cfg.xml:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

<hibernate-configuration>

<session-factory>

<propertyname="hibernate.show_sql">true</property>

<propertyname="hibernate.format_sql">true</property>

<!-- 注意:只有配置 hibernate.hbm2ddl.auto update,才能自動建立表 -->

<propertyname="hibernate.hbm2ddl.auto">update</property>

<propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<!--

原來的配置:

<property name="hibernate.current_session_context_class">thread</property>

SSH 框架整合中會報錯,要麼將這個配置刪了,要麼改成如下配置

參考連結:http://blog.csdn.net/maoyuanming0806/article/details/61417995

-->

<propertyname="hibernate.current_session_context_class">

org.springframework.orm.hibernate5.SpringSessionContext

</property>

<mappingresource="com/siwuxie095/entity/User.hbm.xml"/>

</session-factory>

</hibernate-configuration>

5)編寫Action 類

package com.siwuxie095.action;

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ModelDriven;

import com.siwuxie095.entity.User;

import com.siwuxie095.service.UserService;

public class UserAction extends ActionSupport implements ModelDriven<User> {

private User user=new User();

@Override

public User getModel() {

return user;

}

private UserService userService;

publicvoid setUserService(UserService userService) {

this.userService = userService;

}

public String add() {

userService.add(user);

return"add";

}

}

6)編寫Service 類

UserService.java:

package com.siwuxie095.service;

import org.springframework.transaction.annotation.Transactional;

import com.siwuxie095.dao.UserDao;

import com.siwuxie095.entity.User;

@Transactional

public class UserService {

private UserDao userDao;

publicvoid setUserDao(UserDao userDao) {

this.userDao = userDao;

}

publicvoid add(User user) {

userDao.add(user);

}

}

7)編寫DAO 介面及其實現類

UserDao.java:

package com.siwuxie095.dao;

import com.siwuxie095.entity.User;

public interface UserDao {

void add(User user);

}

UserDaoImpl.java:

package com.siwuxie095.dao.impl;

import org.springframework.orm.hibernate5.HibernateTemplate;

import com.siwuxie095.dao.UserDao;

import com.siwuxie095.entity.User;

public class UserDaoImpl implements UserDao {

private HibernateTemplate hibernateTemplate;

publicvoid setHibernateTemplate(HibernateTemplate hibernateTemplate) {

this.hibernateTemplate = hibernateTemplate;

}

@Override

publicvoid add(User user) {

hibernateTemplate.save(user);

}

}

8)在Struts2 核心配置檔案中進行配置

struts.xml:

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

<struts>

<packagename="demo"extends="struts-default"namespace="/">

<actionname="user_*"class="userAction"method="{1}">

<resultname="add">/succ.jsp</result>

</action>

</package>

</struts>

9)在Spring 核心配置檔案中進行配置

applicationContext.xml:

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="

<!-- (1) -->

<!-- 配置 C3P0 連線池 -->

<beanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource">

<propertyname="driverClass"value="com.mysql.jdbc.Driver"/>

<!--

jdbc:mysql:///test_db jdbc:mysql://localhost:3306/test_db 的簡寫

-->

<propertyname="jdbcUrl"value="jdbc:mysql:///test_db"/>

<propertyname="user"value="root"/>

<propertyname="password"value="8888"/>

</bean>

<!-- SessionFactory 物件的建立交給 Spring 進行管理 -->

<beanid="sessionFactory"

class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">

<!--

因為在 Hibernate 核心配置檔案中,沒有資料庫配置,

而是在 Spring 的核心配置檔案中進行配置,所以需要

注入 dataSource

LocalSessionFactoryBean 中有相關屬性,所以可以

注入

-->

<propertyname="dataSource"ref="dataSource"></property>

<!-- 指定 Hibernate 核心配置檔案的位置 -->

<propertyname="configLocations"value="classpath:hibernate.cfg.xml"></property>

</bean>

<!-- (2) -->

<!-- 配置 Action 物件 -->

<beanid="userAction"class="com.siwuxie095.action.UserAction" scope="prototype">

<propertyname="userService"ref="userService"></property>

</bean>

<!-- 配置 Service 物件 -->

<beanid="userService"class="com.siwuxie095.service.UserService">

<propertyname="userDao"ref="userDaoImpl"></property>

</bean>

<!-- 配置 Dao 實現類物件 -->

<beanid="userDaoImpl"class="com.siwuxie095.dao.impl.UserDaoImpl">

<propertyname="hibernateTemplate"ref="hibernateTemplate"></property>

</bean>

<!-- 配置 HibernateTemplate 物件 -->

<beanid="hibernateTemplate"class="org.springframework.orm.hibernate5.HibernateTemplate">