目前java开发web系统一般有3层,controller、service、dao,请求到达controller,controller调用service,service调用dao,然后进行处理。
什么是持久化(persistence): 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。 保存数据: 内存中: 掉电之后,数据就没了. 磁盘中: 掉电之后,数据依然存在. 大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。 持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。 JPA:JavaEE的规范,Java persistence api: Java的持久化API. Hibernate实现了该规范.(xml/注解)
Spock(Spock官网:http://spockframework.org/)作为java和Groovy测试一种表达的规范语言,其参考了Junit、Groovy、jMock、Scala等众多语言的优点,并采用Groovy作为其语法,目前能够在绝大多数的集成开发环境(如eclipse,Intellij Ieda),构建工具(如Maven,gradle)等场景运行。Spock单元测试相对于传统的junit、JMockito、EsayMock、Mockito、PowerMock,由于使用了Groovy作为语法规则,代码量少,容易上手,提高了单元测试开发的效率,因此号称是下一代单元测试框架。
---- layout: default title: Java分层概念(转) category: [技术, Java, 代码学习] comments: true --- Java分层概念(转) 对于分层的概念,似乎之间简单的三层,多了,就有点难以区分了,所以收藏了这个. ervice是业务层 action层即作为控制器 DAO (Data Access Object) 数据访问 1.JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分?(下面所描述的service层
1.JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分?(下面所描述的service层就是biz) 首先这是现在最基本的分层方式,结合了SSH架构。modle层就是对应的数据库表的实体类。
删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet中调用dao方法。
项目源代码:https://github.com/nnngu/nguSeckill ---- 这是一个整合IDEA+Maven+SSM框架的高并发的商品秒杀项目。我们将分为以下几篇文章来进行详细的讲解
这里要实现的功能是,当我们给出了bean,如:Admin,User,People等实体类后,
DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊、动态、子查询都可以。但是无论多么复杂的查询,dao只是封装增删改查。至于增删改查如何去实现一个功能,dao是不管的。
把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句 同时需要在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定类名。
=======================================================
目录 什么是DAO? DAO模式组成 DatabaseConnection VO DAO Impl Factory 示例 cn.wzl.dao.ConnectionManager:连接数据库(MySql) cn.wzl.vo.Person:Person值类 cn.wzl.dao.IPersonDAO:实现对Person表的操作接口 cn.wzl.dao.impl.PersonDAOImpl:Person表操作实例化 cn.wzl.factory.DAOFactory:工厂类 前端调用代码片段 小结 什么
Github:https://github.com/nnngu 项目源代码:https://github.com/nnngu/nguSeckill
在项目中建立专门用户测试的包结构。 在Junit中,通过@Test注解,可以运行一个方法。
为了避免二级缓存产生脏数据,MyBatis已经做了预防:Mapper组件执行DML语句(这些语句会更新底层数据)时默认会flush二级缓存,因此在同一个Mapper内,只要该Mapper组件执行DML语句更新底层数据,MyBatis就会自动flush二级缓存,这样就避免了产生脏数据。
对于从事Web应用开发人员,Java EE平台如今已经成为电信、金融、电子商务、保险、证券等各行业的大型应用系统的首选开发平台。在企业级应用的开发选择上,.NET已趋式微,PHP通常只用于开发一些企业展示站点或小型应用,因此这些开发语言、开发平台基本上已无法与Java EE进行对抗了。
在MyBatis中,DAO层(Data Access Object层)起到了连接业务逻辑和数据库的桥梁作用。它负责处理数据库的CRUD操作,让业务逻辑与数据访问分离,提高代码的可维护性。
Spring 快速入门 Spring 程序开发步骤 传统方式:service层 要调用 dao层,为了解耦使用 xml 配置文件,简单地说 spring 就是读取配置文件的,通过 spring客户端的 getBean 方法传入 id 标识就可以获得对象,这样就实现了解耦 [653df2afe72d4343b814aa31796a584d.png] 导入 Spring 开发的基本包坐标 ```xml <dependency> <groupId>org.springframework</group
小伙伴们,想必你看到此文,估计也是被公司强制要求的单元测试覆盖率苦恼了,我想说:“me,too”。
在不同业务场景的实际开发过程中,数据库服务器的 IP 地址,访问数据库的用户名或密码经常会发生变化,维护和修改比较麻烦,而为了避免这种情况,Java 中有一个比较重要的 Properties 类,它可以读取 Java 配置文件,这样就可以把常用的配置信息卸载配置文件中,程序员进行维护和修改。
一,为什么框架中根本没有对Exception的一般子类进行回滚配置,异常发生时,事务都进行了回滚 ,说好的只会对RuntimeException(Unchecked 非受检异常)回滚呢?
挑选朋友要慎重,更换朋友更要慎重——富兰克林 有道智云文档 代码如下: package com.ruben; import cn.hutool.core.codec.Base64; import cn.hutool.core.lang.Console; import cn.hutool.core.lang.UUID; import cn.hutool.crypto.digest.DigestUtil; import cn.hutool.extra.tokenizer.Word; import cn
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
与OOP对比,面向切面,传统的OOP开发中的代码逻辑是自上而下的,而这些过程会产生一些横切性问题,这些横切性的问题和我们的主业务逻辑关系不大,这些横切性问题不会影响到主逻辑实现的,但是会散落到代码的各个部分,难以维护。AOP是处理一些横切性问题,AOP的编程思想就是把这些问题和主业务逻辑分开,达到与主业务逻辑解耦的目的。使代码的重用性和开发效率更高。
前面文章使用jdbc进行数据库的连接,虽然代码并不复杂,但是比较繁琐。在连接池的文章里面也使用到了JDBC Template简化了数据库操作的步骤,但是Template只是对JDBC进行了简单的封装,是一个工具类,而并不是一个框架。
报错为:Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required
本文详细分析了MyBatis中“基于嵌套select”映射策略的性能缺陷、并给出了具体的实施建议,本文适合对MyBatis有一定使用经验的读者阅读,对MyBatis小白不适合。
关于Hadoop已经小记了六篇,《Hadoop实战》也已经翻完7章。仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序、单表链接等,想得其精髓,还需深入内部。 按照《Hadoop阅读笔记(五)——重返Hadoop目录结构》中介绍的hadoop目录结构,前面已经介绍了MapReduce的内部运行机制,今天准备入手Hadoop RPC,它是hadoop一种通信机制。 RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序
之前写了一篇文章Spring3:AOP,是当时学习如何使用Spring AOP的时候写的,比较基础。这篇文章最后的推荐以及回复认为我写的对大家有帮助的评论有很多,但是现在从我个人的角度来看,这篇文章写得并不好,甚至可以说是没有太多实质性的内容,因此这些推荐和评论让我觉得受之有愧。
最原始的写法,我要在调用insert()与update()方法前后分别打印时间,就只能定义一个新的类包一层,在调用insert()方法与update()方法前后分别处理一下,新的类我命名为ServiceImpl,其实现为:
写了几天代码,然后对之前学到的知识,进行反思,写出来放在QQ空间上和博客上,目的是互相学习,然后希望可以得到编程高手的补充!这是我转载加修改的博客。 这是我做了2、3天左右的JavaWeb管理系统,bean package放JavaBean类,dao package放数据库操作方法的接口类。daoimpl是实现dao接口的类。factory package是dao工厂类。util package是工具包类,里面有数据库连接类和 分页类。servlet package是servlet类,是整个JavaWeb项目的控制类。view文件夹里全是.jsp文件。 学习MVC设计模式之前,先学习DAO设计模式。下面是我转的博客,是个挺不错的例子 DAO设计模式:
Spring是分层的Java SE/EE应用全栈(full-stack)轻量级开发框架,以IoC(Inverse of Control:反转控制)和AOP(Aspect Oriented Programing:面向切面编程)为内核
POJO:Plain Ordinary Java Object,简单的 Java 对象。它可以包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或不实现任何其它 Java 框架的类或接口。 容器:在日常生活中容器就是一种盛放东西的器具,从程序设计角度看就是装对象的对象,因为存在放入、拿出等操作,所以容器还要管理对象的生命周期。 Bean:一般指容器管理对象,在 Spring 中指 Spring IoC 容器管理对象。 AOP:AOP 是 Aspect Oriented Programming 的缩写,意
几年前,大家并不是这样,那时候还有很多东西可以创新,乱世出英雄总能在一个方向深耕并做出一款款好用的产品功能、框架服务、技术组件等。但后来好像这样的情况开始减少了,取而代之的是重复、复刻、照搬,换个新的皮肤、换个新的样式、换个新的名字,就是取巧的新东西了。
不说废话,直接奔主题 dao层实现类daoImpl /** * */ package daoImpl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import dao.AccountDao; imp
最近在写一个 Mybatis 代码自动生成插件,用的是Mybatis来扩展,其中有一个需求就是 生成javaMapper文件和 xmlMapper文件的时候 希望另外生成一个扩展类和扩展xml文件。原文件不修改,只存放一些基本的信息,开发过程中只修改扩展的Ext文件 形式如下: SrcTestMapper.java
Topic Mybatis步骤 mybatis解决原生态jdbc的问题 数据库连接,使用时连接,不使用时释放,对数据库进行频繁连接的开启和关闭,造成数据库资源浪费,影响数据库性能 设想:使用数据库连接池管理数据库连接 将sql语句硬编码到Java代码中,如果sql语句修改,需要重新编译Java代码,不利于系统维护. 设想:将SQL语句配置在xml配置文件中,即使SQL变化,不需要对Java代码进行重新编译 向preparedStatement中设置参数,对占位符位置和设置参数硬编码到Java代码中,不利
在官方文档中对resultType做了如下介绍:从这条语句中返回的期望类型的类的完全限定名或别名。注意如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用 resultType 或 resultMap,但不能同时使用。
以“图书管理系统”为例:“图书管理”功能的数据访问模块,里面的操作方法有addBook(图书追加)、deleteBook(图书删除)、updateBook(图书修改)、selectBook(图书查询)等,对于不同数据库其实现的细节是不同的。因此,不太可能针对每种类型的数据库做一个通用的对象来实现这些操作。这时候,就可以定义一个用户数据访问对象的接口BookDao,提供抽象的方法。不同类型数据库的用户访问对象只要实现这个接口就可以了,如图11.1所示。
Java 2 平台引入了 java.lang.ref 包,这个包下面包含了几个Reference相关的类,Reference相关类将Java中的引用也映射成一个对象,这些类还提供了与垃圾收集器(garbage collector)之间有限的交互。
三层架构包含的三层: 界面层:和用户打交道的,接收用户的请求参数,显示处理结果的。对应的包是controller包。 业务逻辑层:接收了界面层传递的数据,计算逻辑,调用数据库,获取数据。对应的包是service包。 数据访问层:就是访问数据库,执行对数据的查询,修改,删除等等。对应的包是dao包。 三层的处理请求的交互: 用户使用界面层–> 业务逻辑层—>数据访问层(持久层)–>数据库(mysql) 如图:
提供一种Spring的IoC容器与Mybatis的整合方式,其中中,Mybatis采用纯注解方式配置,Spring采用XML方式配置。数据库源采用的是C3P0数据库连接池。
作用: SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层 使用spring MVC负责请求的转发和视图管理 spring实现业务对象管理,mybatis作为数据对象的持久化引擎 原理: SpringMVC: 1.客户端发送请求到DispacherServlet(分发器) 2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller 3
客户发送数据到显示层,显示层发送数据到业务层,业务发送数据到数据层,数据层进行持久化.即.保存进入databases
原博地址https://laboo.top/2018/11/26/a-db/#more
1、创建实现类 恢复我们的IUserDao.xml文件 UserDaoImpl.java package com.tianyi.dao.impl; import com.tianyi.dao.IUserDao; import com.tianyi.javabean.User; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import java.util.L
分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页。这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其特点是对内存中数据量存储不大,只是缺点就是要对数据库不断的进行访问;而对逻辑分页来说,就有所不同,它是一下子就把所有的数据全部查询出来,然后放入到内存中,访问速度快,缺点就是对内存空间不足,数据量过大。
项目初始化 Shusheng Shi@PC-of-sss MINGW64 /h/mmall $ touch README.md Shusheng Shi@PC-of-sss MINGW64 /h/mmall $ touch .gitignore Shusheng Shi@PC-of-sss MINGW64 /h/mmall $ git init Initialized empty Git repository in H:/mmall/.git/ Shusheng Shi@PC-of-sss MINGW
领取专属 10元无门槛券
手把手带您无忧上云