1、一个spring配置文件,它是核心。这个xml配置的东东有:
1)、一个号称目前最快的数据源:BoneCPDataSource。
2)、数据库连接properties文件。
3)、spring 自动扫描注册在application context中的组件:<context:component-scan base-package="com.jroo" />
4)、aop、注解事务管理:<aop:aspectj-autoproxy/>、<tx:annotation-driven/>
5)、增删改查,就仅此一个spring配置文件,架构搭好了,开发人员不用管任何spring配置文件了。
6)、见下图:
2、实体层:使用jpa注解或hibernate注解标注每个实体,如:
@Entity
@Table(name = "SYS_DEPT")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class SysDept extends BaseEntity implements java.io.Serializable {
private static final long serialVersionUID = -7969250614159287629L;
//略去属性
//略去构造方法
//下面是getter方法示例
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PARENT_ID")
public SysDept getSysDept() { return this.sysDept;}
@Column(name = "DEPT_NAME", length = 20)
public String getDeptName() { return this.deptName;}
..........
}
3、dao层性能:使用ehcache作为查询缓存。
4、dao层:
1)、hibernate实现:推荐使用hibernate。
2)、dbutils实现:如果是复杂的查询,如实体类没有建立关联关系,需建立左连接、右连接、union等负载查询逻辑, 或者您喜欢直接 写sql,推荐使用dbutils,它能完全满足您写sql的欲望。
3)、一个dao原则:一个系统只有一个dao,不管您开发的多少个模块,都不再需要写dao。一个dao管理所有模块与数据库的操作。
4)、hql怎么写的,在哪里写的?
4.1)、使用HqlBuilder或SqlBuilder封装查询语句及查询参数。HqlBuilder和StringBuilder、stringBuffer的使用方法类似。
如分页查询:
HqlBuilder hqlBuilder = new HqlBuilder("select log from SysLoginLog as log where 1=1");
if(StringUtils.isNotEmpty(loginUserId)){
hqlBuilder.append(" and log.loginUser.id=:loginUserId ").setParam("loginUserId", loginUserId);
}
if(StringUtils.isNotEmpty(loginUserName)){
hqlBuilder.append(" and log.loginUser.userName like:loginUserName ").setParam("loginUserName", "%"+loginUserName+"%");
}
page = pageQueryHqlBuilder(page, hqlBuilder);
4.2)、写在外部xml中:
4.3)、在页面上写,并存入数据库:
5、service层:每个功能模块都应该有一个service层:一个接口和它的实现。
接口如:public interface UserService extends BaseService<SysUser> ,需继承接口BaseService,
BaseService接口中定义了一般增删改查方法。
实现类如:
@Service
@Transactional
public class UserServiceImpl extends BaseServiceImpl<SysUser> implements UserService {}
注意注解:@Service和@Transactional,实现需继承BaseServiceImpl类,
6、action层,如:
@Controller("system.action.AccessLogAction")
@Scope("prototype")
public class AccessLogAction extends BaseCrudAction<SysAccessLog>
注意两个注解和父类BaseCrudAction,如果该功能有附件上传,请继承BaseUploadFileAction。
分享到:
相关推荐
怎样区分Action, Service 和 Dao功能.怎样区分Action, Service 和 Dao功能.
spring3 mvc 注解action dao service 实例教程 ,自己收集的。找了很久。。喜欢大家喜欢。
一个增删改查的idea插件,可以根据数据库表结构,帮助您快速生成dao、service、controller等相关代码。同时支持MyBatis、JPA
Action,Service和Dao功能
我们在开发过程中经常会发生spring注入错误或失败的情况,其实Web服务器端在Action、dao、service包之内是很容易实现的,在这些包之外实现spring注入就不容易了,总是出错,其实根本原因是无法获得相应的spring上...
基于ssh三层架构的JAVA开发简单示例,包含service,dao,action,pojo
Java自动生成entity、dao、service、controller代码
SpringMVC+Mybatis整合及dao、service强封装:一、SPringMVC与Mybatis框架整合,其中SpringMVC主要采用注解方式实现,Mybatis采用xml为主,对数据库开发、测试、部署环境进行分离配置;二、在封装上针对Mybatis进行...
dao,service 缓存设置,验证,代码
数据库表生成domain,dao,service,controller工具
简单的JavaWeb入门小程序,使用MVC模式(DAO\Service\Servlet)实现对mysql数据库的增删查改操作
采用Service+Service+DAO实现用户注册登陆 数据库:SQLite 代码:JSP 目的要求 (1)掌握Servlet使用技术; (2)掌握开发平台的分层技术;...(1)Servlet+Service+DAO开发模式的理解; (2)DAO的封装。
ssh分页注释加说明借鉴整理的 ssh分页(.dao,.daoImp,.service,.serviceImp,.action,.jsp,applicationContext.xml
NULL 博文链接:https://kaowww153.iteye.com/blog/859803
向你的service里注入dao(spring配置文件),dao是这个包里的类 <bean id="employeeService" class="com.erp.service.impl.EmployeeServiceImpl"> <bean class="com.xvxv.common.dao.impl.EntityDaoImpl"> ...
一键生成整库的mapper entity dao service serviceTest controller controllerTest controller注释-- 在线文档生成 前提是先建表写 表注释 字段注释 如果要使用doc文档 电脑需要配置node 安装apidoc 比swagger好用...
dao完成连接数据库修改删除...service层是面向功能的,一个个功能模块比如说银行登记并完成一次存款,UI要把请求给service层,然后service曾将这一个case分解成许多步骤调用底层的实现完成这次存款,dao就是下面那层。
运用MVC模式以及servlet、jsp技术实现留言板添加、查看
推荐个自动生成JAVA MVC多层代码的工具(dao,service,controller)(dao,service,controller) hibernate的hbm.xml ibatis的mapper.xml jsp文件都可以生成