框架技术--S2SH框架整合(注解 No 1)

2024-05-25 13:32
文章标签 技术 整合 框架 注解 s2sh

本文主要是介绍框架技术--S2SH框架整合(注解 No 1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接着之前的一篇文章“框架技术--S2SH框架整合(使用myeclipse自动生成)”,这里我使用了注解搭建了下,和大家分享下。

目前只将spring、hibernate两层框架使用了注解的方式,struts2暂时还没替换,待后续我替换上,在整理文章与大家分享。

以下仅是这两天使用注解搭建框架的一些方式,以此记录,便于后续使用。


hibernate框架:

1、使用hierbernate框架,其中hibernate.cfg.xml和*.hbm.xml是之前我文章中的用法,hibernate.cfg.xml是hibernate的配置文件,*.hbm.xml是实体Bean中属性和数据库的对应关系配置。

2、使用了注解后,我们就不需要使用*.hbm.xml来配置实体Bean中属性和数据库了。可以通过注解实现这些功能。

代码如下:

package com.gp.bean;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;/*** TUser entity.* * @author MyEclipse Persistence Tools*/
@Entity
@Table(name="t_user")
public class TUser implements java.io.Serializable {// Constructors/** default constructor */public TUser() {}/** full constructor */public TUser(String name, String password) {this.name = name;this.password = password;}@Id@GeneratedValue@Column(name = "id")private Long id;@Column(name = "name")private String name;@Column(name = "password")private String password;// Property accessorspublic Long getId() {return this.id;}public void setId(Long id) {this.id = id;}public String getName() {return this.name;}public void setName(String name) {this.name = name;}public String getPassword() {return this.password;}public void setPassword(String password) {this.password = password;}}

hibernate.cfg.xml配置如下:

这里我们将一些数据库连接的属性配置上,另外我们还要告诉hibernate需要映射的实体bean类路径,详见18行。

<?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"><!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration><session-factory><property name="connection.url">jdbc:mysql://192.168.200.27:3306/liveEpg?useUnicode=true&characterEncoding=UTF-8</property><property name="connection.username">root</property><property name="connection.password">root</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><mapping class="com.gp.bean.TUser" /></session-factory></hibernate-configuration>

以上这些就是hibernate的注解配置,到此基本是完成了简单的配置,下面我们来修改spring。


spring框架

1、spring框架核心配置文件applicationContext.xml,之前我们需要进行一些注入的配置。

如图(可详见http://blog.csdn.net/gaopeng0071/article/details/9895845 ):


在使用了注解我们就不需要进行这么多的配置,下面分别记录下使用注解表示各个层的用法:

dao底层,访问数据库的,在代码中通过@Repository来代替上图xml中103-105行代码。

package com.gp.daoImpl;import java.util.ArrayList;
import java.util.List;import javax.annotation.Resource;import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;import com.gp.dao.UserDao;@Repository("userDao")
public class UserDaoImpl implements UserDao {private HibernateTemplate hibernateTemplate;public HibernateTemplate getHibernateTemplate() {return hibernateTemplate;}@Resourcepublic void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}public List findUser() throws Exception {// TODO Auto-generated method stubList list = new ArrayList();Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();try {// HqlQuery query = session.createQuery("from TUser usg");list = query.list();} catch (HibernateException e) {e.printStackTrace();}return list;}}
service层,其中@Resource(name="userDao"),如上图xml中的102~105行代码。

package com.gp.serviceImpl;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import com.gp.dao.UserDao;
import com.gp.service.UserService;@Service("userService")
public class UserServiceImpl implements UserService {private UserDao userDao;//添加事务处理,指明readOnly的话,Spring会对其有一定的优化public List findUser() throws Exception {// TODO Auto-generated method stubList list = userDao.findUser();return list;}public UserDao getUserDao() {return userDao;}@Resource(name="userDao")public void setUserDao(UserDao userDao) {this.userDao = userDao;}}
action层代码如下,@Resource(name="userService")如上图xml中的108~112行代码:

package com.gp.action;import java.util.List;import javax.annotation.Resource;import com.gp.bean.TUser;
import com.gp.service.UserService;
import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private UserService userService;private List<TUser> list;public String findUser() throws Exception {list = userService.findUser();return SUCCESS;}public UserService getUserService() {return userService;}@Resource(name="userService")public void setUserService(UserService userService) {this.userService = userService;}public List<TUser> getList() {return list;}public void setList(List<TUser> list) {this.list = list;}
}


在上面的service层与dao层分别使用了@Service("userService")和@Service("userService")两种用法,这样使用是根据不同层级不同的职责,使用不同的用法。

详见:http://www.cnblogs.com/chenzhao/archive/2012/02/25/2367978.html

applicationContext.xml源码如下:

这里的事物,我并没有采用注解的形式,扔是使用的xml进行的配置。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"><!-- dataSource注入到sessionFactory --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="configLocation" value="classpath:hibernate.cfg.xml"></property></bean><bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory"></property></bean><context:component-scan base-package="com.gp"></context:component-scan><bean id="txManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><tx:advice id="txAdvice" transaction-manager="txManager"><tx:attributes><tx:method name="query*" read-only="true" /><tx:method name="search*" read-only="true" /><tx:method name="find*" read-only="true" /><tx:method name="save*" /><tx:method name="update*" /><tx:method name="delete*" /></tx:attributes></tx:advice><aop:config><aop:pointcut expression="execution(* com.gp.service.*.*(..))"id="serviceMethod" /><aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" /></aop:config>
</beans>






这篇关于框架技术--S2SH框架整合(注解 No 1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001645

相关文章

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.