- 【DevOps工具篇】使用Ansible部署Keycloak oauth2proxy 和 单点登录(SSO)设置
小涵
DevOps企业级项目实战devopsansible运维ldapkeycloakproxyoauth
【DevOps工具篇】使用Ansible部署Keycloakoauth2proxy和单点登录(SSO)设置目录【DevOps工具篇】使用Ansible部署Keycloakoauth2proxy和单点登录(SSO)设置Ansible基础知识部署Keycloak创建OIDC-客户端创建oauth2proxy部署顶级AnsiblePlaybookHost.iniplaybook.yaml推荐超级课程:D
- 【DevOps工具篇】Keycloak中设置LDAP认证
小涵
DevOps企业级项目实战devops运维ldapkeycloak
【DevOps工具篇】Keycloak中设置LDAP认证目录【DevOps工具篇】Keycloak中设置LDAP认证本次使用的环境服务器配置LDAP目录结构使用存储在LDAP中的用户进行登录Keycloak配置步骤功能测试从LDAP向Keycloak批量添加用户Keycloak配置步骤功能测试推荐超级课程:Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战启用K
- 【DevOps工具篇】Keycloak中设置与OpenLDAP认证集成
小涵
DevOps企业级项目实战devops运维openldapldapphpldapadminkeycloakAD
【DevOps工具篇】Keycloak中设置与OpenLDAP认证集成目录【DevOps工具篇】Keycloak中设置与OpenLDAP认证集成步骤1.启动一个用于安装OpenLDAP的EC2实例步骤2.安装OpenLDAP启动docker容器查看所有用户信息extendedLDIFLDAPv3basewithscopesubtreefilter:(objectclass=*)requesting
- OpenLDAP接入NineData SSO
NineData
云数据库技术SQL开发数据库数据库开发sqlmysql云计算安全dba
本文面向使用OpenLDAP管理人员账户信息的企业,提供将OpenLDAP接入单点登录(SSO)的最佳实践指南,以实现统一认证和授权管理。通过集成OpenLDAP、phpLDAPadmin、Keycloak,您可以轻松通过SSO功能登录NineData。1.背景信息OpenLDAP(OpenLightweightDirectoryAccessProtocol)是一个开源的轻量级目录访问协议(LDA
- Spring Security对接OIDC(OAuth2)外部认证
langzitianya
SpringBootJAVAspringbootspringsecurityoauth2oidcopenid前后端分离
前后端分离项目对接OIDC(OAuth2)外部认证,认证服务器可以使用Keycloak。后端已有用户管理和权限管理,需要外部认证服务器的用户名和业务系统的用户名一致才可以登录。后台基于SpringBoot2.7+SpringSecurity流程:前台浏览器跳转到后台地址+/login/oauth2/authorization/my-oidc-client后台返回302重定向,重定向到登录外部认证服
- iOS Developer的全栈之路 - Keycloak(4)
西西的一天
本节将介绍如何基于SpringSe使用Keycloak来保护restapi,网上相关的文章很少,几乎没有直接可参考的,这里附上示例代码。其中使用的Keycloak版本为8.0.1。配置Keycloak根据系列文章的前两篇已经对Keycloak有了大致的认识,基础配置就不再赘述,这里需要创建一个realm:springboot-integration,并在此realm中创建两个client,一个是s
- KeyCloak实现单点登录说明
ld851
工具集成单点登录
1.新建领域启动keyCloak,登录管理控制台页面,新建领域(若所需领域已存在则无需进行领域新建)。如下图所示:填写名称(示例为dataservices)点击保存完成创建,如下图所示:2.新建客户端选择客户端菜单,新建客户端,填写客户端id,填写完成后页面如下图所示:启动账户授权选项,填写相关URL(将单点登录的url配置到DataServices管理端地址),样例如下:有效的重定向URI:ht
- Keycloak - docker 运行 & 前端集成
GoldenaArcher
#前端工程化docker前端eurekakeycloak
Keycloak-docker运行&前端集成这里的记录主要是跟我们的项目相关的一些本地运行/测试,云端用的keycloak版本不一样,不过本地我能找到的最简单的配置是这样的docker配置&运行keycloakkeycloak有官方(RedHatInc.)的镜像,官方文档里也提供了一些配置好的Dockerfile,具体可以参考https://www.keycloak.org/server/cont
- 一步步学习Keycloak(授权篇)
乱七八糟谈技术
上一篇详细介绍了如何在Nginx中集成Keycloak来进行应用程序的认证,将认证和授权服务从业务中剥离出来,减少了代码的侵入,但在实际的产品中,仅仅进行认证服务肯定是不够的,需要有授权功能。这一篇文章将介绍如何在Nginx中利用Keycloak完成对服务或者应用的授权。刚开始的设想是在Keycloak中对资源进行授权配置,然后利用上一篇介绍的开源库oidc-proxy来完成对应用或服务的认证和授
- 杂记 | keycloak的介绍和基本概念
程序猿林仔
杂记keycloak认证授权身份和访问单点登录
文章目录01简介1.1什么是身份和访问管理1.2Keycloak概述1.3官网及文档02Keycloak的基础概念2.1领域2.2客户端和应用程序2.3用户和身份验证2.4认证和授权2.5令牌和会话03使用Keycloak进行身份验证和授权3.1配置用户存储和身份验证策略3.2集成应用程序和客户端3.3实现基于角色的访问控制本文由ChatGPT生成,经人工修改,主要介绍基本概念,面向初学者,不涉及
- 超级详细的 Docker Desktop 安装 Keycloak
IT小郭.
#Docker#软件安装与下载(测试运维)#后端技能中心(JAVA)docker容器运维springboot系统架构运维开发java-ee
一、Keycloak简介收先先來看一下Keycloak的基本資訊:名稱:Keycloak開發使用的程式語言:Java公用:單點登入驗證與授權工具許可協議:ApacheLicense2.0公開倉庫:https://github.com/keycloak/keycloak官方網站:https://www.keycloak.org撰寫當下最新版本:15.0.2(2021年8月20日)Keycloak是拿
- keycloak部署
早退的程序员
服务器linux运维
https://downloads.jboss.org/keycloak/11.0.2/keycloak-11.0.2.zip1.上传zip并解压uzipkeycloak-11.0.2.zip2.创建mysql数据库CREATESCHEMA`keycloak`DEFAULTCHARACTERSETutf8;3.安装mysql的jdbc驱动下载mysql的JDBC驱动(mysql-connector
- 【Java万花筒】Java安全卫士:从密码学到Web应用攻击
friklogff
Java万花筒开发语言java密码学数据分析
Java安全锦囊:从Web应用攻击到加密算法,助你建立强固的开发堡垒前言在当今数字化时代,安全性至关重要,特别是对于Java开发者而言。本文将深入探讨Java安全与加密领域的关键库和技术,包括BouncyCastle、Jasypt、Keycloak、ApacheShiro、JavaCryptographyExtension(JCE)和OWASPJavaEncoder。通过详细介绍各个库的功能、使用
- 如何使用docker部署keycloak?
surfirst
架构oauthdocker
Keycloak是一个开源的oauth用户认证和授权解决方案。使用keycloak开发者就不用自己实现用户管理功能了。Keycloak的教程中提供了docker部署教程,但是教程中使用的是Keycloak自己的h2数据库,默认暴露的是http端口,再最后验证阶段如果不是把keycloak部署在本机,使用https://www.keycloak.org/app/是不能让开发者新建的用户登录的。本文提
- Keycloak session和token配置经验总结
卓越编程
keycloakjava学习
Session配置配置项说明配置项描述SSOSessionIdle此设置仅适用于OIDC客户端。如果用户处于非活动状态的时间超过此超时,则用户会话将失效。当客户端请求身份验证或发送刷新令牌请求时,此超时值将重置。Keycloak在会话失效生效之前为空闲超时添加了一个时间窗口。SSOSessionMax用户会话过期之前的最长时间。SSOSessionIdleRememberMe此设置类似于标准SSO
- Keycloak登录页面自动跳转问题分析
乱七八糟谈技术
我们使用Keycloak作为认证授权服务器,当用户Session过期时会自动跳转到登录页,这个功能看似很简单,但也需要前后端配合完成,并且在实现过程中也走了些弯路,明白了不少Nginx的配置相关的问题,总结出来为以后有类似需求的开发者。问题一,RefreshToken过期时间问题在OAuth2中,防止accesstoken的泄漏,给accesstoken限定一个较短的有效期以防止泄漏带来的风险,然
- RFC6749-OAuth2.0
珠峰下的沙砾
Securityweb安全
前言最近在项目中需要实现SSO(单点登录)功能,以实现一处注册,即可在任何平台之间登录的功能。我们项目中并没有直接对接第三方认证系统而是通过集成keycloak完成一系类安全协议的对接工作。如果我们在代码级别自己完成各种安全协议的对接是一项十分大的工程。不仅要走统一的一套安全体系还有兼容各种安全协议的对接。唉,想想就头疼。为了简单高效实现SSO功能,项目就集成了keycloak.项目中只需要验证K
- Keycloak 高可用部署实战
CodingDemo
云原生云原生kubernetes微服务
Keycloak简介Keycloak是一个开源的Identity和AccessManagement工具,主要特性:单点登录使用Keycloak实现单点登录,这意味着你不必要为每个应用都单独开发一套登录表单、验证用户和存储用户信息等相关功能。身份代理和社交登录Keycloak可以代理登录目前主流的网络服务账号,比如谷歌、GitHub、FaceBook等。用户联邦Keycloak已经内建支持已有LDA
- 基于kubernetes 部署 keycloak
CodingDemo
云原生kubernetes容器云原生
本文主要讲解基于kubernetes部署keycloak,并通过ingress暴露服务首先为ingress准备tls证书,有关证书生成,请参考Keycloak高可用部署实战生成证书部分,这里就步骤重复描述。证书生成以后,创建tlssecretkubectlcreatesecrettlskeycloak-tls--keyserver.key--certserver.crt然后编辑kubernetes
- spring cloud 问题记录(十六) 使用Feign跨服调用时header请求头中的信息丢失
zhuwei_clark
Spring-cloudspringcloud
写这篇帖子呢其实是因为昨天(2019年7月4号)我同事(大牛)遇到的一个BUG,我也就跟着学习了下。情况呢很简单,我们项目的权限验证使用的keycloak,而验证体系继承在了gateway,获取用户信息的时候。而用户的部分信息是直接通过gateway获取之后,使用header的方式传输给服务的。而同事在使用A服务调用B服务的时候,发现从request里面获取不到我们自己指定的请求头信息了,其实也就
- keycloak集群
小诸葛686
安装步骤下文采用的主备模式下载下载keycloak:https://downloads.jboss.org/keycloak/6.0.1/keycloak-6.0.1.tar.gz下载keycloak-gatekeeper:#用于代理kibana,prometheushttps://downloads.jboss.org/keycloak/6.0.1/gatekeeper/keycloak-gat
- keycloak~避免出现"用户已登录"的界面
Java法师
场景keycloak出现"用户已登录"的界面的场景我们需要先搞清楚,主要是这样的操作:用户打开一个浏览器,在上面同时打开多个登录窗口用户先在一个窗口上进行登录用户再第二个窗口上再进行登录这时,出现用户已经登录,事实上,在kc上,如果你已经登录了,则不能再使用其它用户登录了原因同一个浏览器在同一个kcrealm下,它的sessionid是相同的,所以被认为一个用户,不支持多个用户的sessionid
- spring boot 3.2 整合 keycloak
clooker
springboot后端java
背景项目中用到keycloak,因此其他所有管理页面要集成keycloak做统一登录认证。Keycloak侧配置容器方式启动keycloak服务端dockerrun-d--namemykeycloak-p8080:8080-eKEYCLOAK_ADMIN=admin-eKEYCLOAK_ADMIN_PASSWORD=adminkeycloakstart-dev注意如果不能联网的话需要要提前下载好镜
- 单点登录(SingleSignOn,SSO) Keycloak OAuth 2.0 OpenID Connect JWT (JSON Web Token) SAML CAS
iHero
WEBjson前端数据库
单点登录(SingleSignOn,SSO)KeycloakKeycloak是一个身份和访问管理开源解决方案,它支持多种身份验证和授权协议,常用的包括OpenIDConnect(OIDC)和OAuth2.0协议。OpenID连接(OIDC):协议特点:建立于OAuth2.0以上,用于身份验证。OIDC提供认证(Authentication)和授权(Authorization)功能,允许客户端应用程
- 杂记 | 使用keycloak实现SSO单点登录(新手向,概念、原理、逻辑、详细步骤、难点解释)
程序猿林仔
杂记keycloak服务器认证单点登录
文章目录01单点登录的概念02keycloak的中的相关概念2.1概念之间的关系2.2案例说明03如何使用keycloak实现单点登录3.1步骤与效果说明3.2环境说明04操作步骤4.1在服务器上创建并启动keycloak服务4.2创建一个领域4.3创建一个客户端4.4获取客户端适配器配置4.5创建一个用户4.6创建第一个应用4.7创建第二个应用4.8单点登录测试05回顾与说明5.1关于adapt
- vuekeyclock 集成
Chenyj0109
javascript
前端集成keycloak鉴权的主要写法,在main.js里面写importVueKeycloakJsfrom'@dsb-norge/vue-keycloak-js'import{KeycloakInstance}from"keycloak-js";//回调地址constpageIndex=process.env.NODE_ENV==='production'?'http://xxxx/#/':'h
- 为Keycloak添加自定义API
陈sir的知识图谱
添加机制ServiceProviderInterfaces(SPI)创建RESTAPI我们创建一个不需要认证授权就可以访问的API,然后返回用户列表添加依赖org.keycloakkeycloak-coreprovided${keycloak.version}org.keycloakkeycloak-server-spiprovided${keycloak.version}org.keycloak
- Keycloak保护Spring Boot Restful API接口
csdnharrychinese
javalinuxpython大数据vue
Keycloak+SpringSecurity组合使用挺合适的.蓝狐软件写了几篇Keycloak文章挺好的.下面是其中一篇链接postmanKeycloak保护SpringBootRestfulAPI接口SpringSecurity整合实例https://www.lanhusoft.com/Article/740.htmlspringboot整合keycloakhttps://www.cnblog
- keycloak 9.0 迁移数据库到MySQL 8.0.19
dgatiger
1.官方文档下载地址https://www.keycloak.org/downloads.html数据库配置https://www.keycloak.org/docs/latest/server_installation/index.html#database-configuration2.驱动准备Oracle官网下载下载mysql-connector-java-8.0.19.zip,略。解压~/
- 2.keycloak编译
sinwaj
1.Java版本1.Java2.maven版本2.maven3.setting.xml3.特别设置4.版本制作mvninstall-Pdistribution-DskipTests4.发布版本制作
- PHP,安卓,UI,java,linux视频教程合集
cocos2d-x小菜
javaUIPHPandroidlinux
╔-----------------------------------╗┆
- 各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
bozch
.net.net mvc
在.net mvc5中,在执行某一操作的时候,出现了如下错误:
各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
经查询当前的操作与错误内容无关,经过对错误信息的排查发现,事故出现在数据库迁移上。
回想过去: 在迁移之前已经对数据库进行了添加字段操作,再次进行迁移插入XXX字段的时候,就会提示如上错误。
&
- Java 对象大小的计算
e200702084
java
Java对象的大小
如何计算一个对象的大小呢?
 
- Mybatis Spring
171815164
mybatis
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerService userService = (CustomerService) ac.getBean("customerService");
Customer cust
- JVM 不稳定参数
g21121
jvm
-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。当然这是在非合理设置的前提下,如果此类参数设置合理讲大大提高JVM 的性能及稳定性。 可以说“不稳定参数”
- 用户自动登录网站
永夜-极光
用户
1.目标:实现用户登录后,再次登录就自动登录,无需用户名和密码
2.思路:将用户的信息保存为cookie
每次用户访问网站,通过filter拦截所有请求,在filter中读取所有的cookie,如果找到了保存登录信息的cookie,那么在cookie中读取登录信息,然后直接
- centos7 安装后失去win7的引导记录
程序员是怎么炼成的
操作系统
1.使用root身份(必须)打开 /boot/grub2/grub.cfg 2.找到 ### BEGIN /etc/grub.d/30_os-prober ### 在后面添加 menuentry "Windows 7 (loader) (on /dev/sda1)" { 
- Oracle 10g 官方中文安装帮助文档以及Oracle官方中文教程文档下载
aijuans
oracle
Oracle 10g 官方中文安装帮助文档下载:http://download.csdn.net/tag/Oracle%E4%B8%AD%E6%96%87API%EF%BC%8COracle%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3%EF%BC%8Coracle%E5%AD%A6%E4%B9%A0%E6%96%87%E6%A1%A3 Oracle 10g 官方中文教程
- JavaEE开源快速开发平台G4Studio_V3.2发布了
無為子
AOPoraclemysqljavaeeG4Studio
我非常高兴地宣布,今天我们最新的JavaEE开源快速开发平台G4Studio_V3.2版本已经正式发布。大家可以通过如下地址下载。
访问G4Studio网站
http://www.g4it.org
G4Studio_V3.2版本变更日志
功能新增
(1).新增了系统右下角滑出提示窗口功能。
(2).新增了文件资源的Zip压缩和解压缩
- Oracle常用的单行函数应用技巧总结
百合不是茶
日期函数转换函数(核心)数字函数通用函数(核心)字符函数
单行函数; 字符函数,数字函数,日期函数,转换函数(核心),通用函数(核心)
一:字符函数:
.UPPER(字符串) 将字符串转为大写
.LOWER (字符串) 将字符串转为小写
.INITCAP(字符串) 将首字母大写
.LENGTH (字符串) 字符串的长度
.REPLACE(字符串,'A','_') 将字符串字符A转换成_
- Mockito异常测试实例
bijian1013
java单元测试mockito
Mockito异常测试实例:
package com.bijian.study;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.
- GA与量子恒道统计
Bill_chen
JavaScript浏览器百度Google防火墙
前一阵子,统计**网址时,Google Analytics(GA) 和量子恒道统计(也称量子统计),数据有较大的偏差,仔细找相关资料研究了下,总结如下:
为何GA和量子网站统计(量子统计前身为雅虎统计)结果不同?
首先:没有一种网站统计工具能保证百分之百的准确出现该问题可能有以下几个原因:(1)不同的统计分析系统的算法机制不同;(2)统计代码放置的位置和前后
- 【Linux命令三】Top命令
bit1129
linux命令
Linux的Top命令类似于Windows的任务管理器,可以查看当前系统的运行情况,包括CPU、内存的使用情况等。如下是一个Top命令的执行结果:
top - 21:22:04 up 1 day, 23:49, 1 user, load average: 1.10, 1.66, 1.99
Tasks: 202 total, 4 running, 198 sl
- spring四种依赖注入方式
白糖_
spring
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我
- angular.injector
boyitech
AngularJSAngularJS API
angular.injector
描述: 创建一个injector对象, 调用injector对象的方法可以获得angular的service, 或者用来做依赖注入. 使用方法: angular.injector(modules, [strictDi]) 参数详解: Param Type Details mod
- java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待
bylijinnan
Integer
public class PC {
/**
* 题目:生产者-消费者。
* 同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待。
*/
private static final Integer[] val=new Integer[10];
private static
- 使用Struts2.2.1配置
Chen.H
apachespringWebxmlstruts
Struts2.2.1 需要如下 jar包: commons-fileupload-1.2.1.jar commons-io-1.3.2.jar commons-logging-1.0.4.jar freemarker-2.3.16.jar javassist-3.7.ga.jar ognl-3.0.jar spring.jar
struts2-core-2.2.1.jar struts2-sp
- [职业与教育]青春之歌
comsci
教育
每个人都有自己的青春之歌............但是我要说的却不是青春...
大家如果在自己的职业生涯没有给自己以后创业留一点点机会,仅仅凭学历和人脉关系,是难以在竞争激烈的市场中生存下去的....
&nbs
- oracle连接(join)中使用using关键字
daizj
JOINoraclesqlusing
在oracle连接(join)中使用using关键字
34. View the Exhibit and examine the structure of the ORDERS and ORDER_ITEMS tables.
Evaluate the following SQL statement:
SELECT oi.order_id, product_id, order_date
FRO
- NIO示例
daysinsun
nio
NIO服务端代码:
public class NIOServer {
private Selector selector;
public void startServer(int port) throws IOException {
ServerSocketChannel serverChannel = ServerSocketChannel.open(
- C语言学习homework1
dcj3sjt126com
chomework
0、 课堂练习做完
1、使用sizeof计算出你所知道的所有的类型占用的空间。
int x;
sizeof(x);
sizeof(int);
# include <stdio.h>
int main(void)
{
int x1;
char x2;
double x3;
float x4;
printf(&quo
- select in order by , mysql排序
dcj3sjt126com
mysql
If i select like this:
SELECT id FROM users WHERE id IN(3,4,8,1);
This by default will select users in this order
1,3,4,8,
I would like to select them in the same order that i put IN() values so:
- 页面校验-新建项目
fanxiaolong
页面校验
$(document).ready(
function() {
var flag = true;
$('#changeform').submit(function() {
var projectScValNull = true;
var s ="";
var parent_id = $("#parent_id").v
- Ehcache(02)——ehcache.xml简介
234390216
ehcacheehcache.xml简介
ehcache.xml简介
ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义CacheManager的配置信息的。根据之前我们在《Ehcache简介》一文中对CacheManager的介绍我们知道一切Ehcache的应用都是从CacheManager开始的。在不指定配置信
- junit 4.11中三个新功能
jackyrong
java
junit 4.11中两个新增的功能,首先是注解中可以参数化,比如
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runn
- 国外程序员爱用苹果Mac电脑的10大理由
php教程分享
windowsPHPunixMicrosoftperl
Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因:
1、Mac OS X 是基于 Unix 的
这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到。如果你是个 wi
- 位运算、异或的实际应用
wenjinglian
位运算
一. 位操作基础,用一张表描述位操作符的应用规则并详细解释。
二. 常用位操作小技巧,有判断奇偶、交换两数、变换符号、求绝对值。
三. 位操作与空间压缩,针对筛素数进行空间压缩。
&n
- weblogic部署项目出现的一些问题(持续补充中……)
Everyday都不同
weblogic部署失败
好吧,weblogic的问题确实……
问题一:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [zip:E:/weblogic/user_projects/domains/base_domain/serve
- tomcat7性能调优(01)
toknowme
tomcat7
Tomcat优化: 1、最大连接数最大线程等设置
<Connector port="8082" protocol="HTTP/1.1"
useBodyEncodingForURI="t
- PO VO DAO DTO BO TO概念与区别
xp9802
javaDAO设计模式bean领域模型
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO。
它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(指的是他们的属性)。这样,PO独立出来,数据持