锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
聽聽聽聽聽 鐗㈤獨瀹屾瘯鏉ヨ璇寸洰鍓嶇殑J2EE鍋氭硶銆傛棦鐒舵秹鍙婂埌嫻佺▼錛岄偅涓嶅厤灝遍偅涓ょ錛學FMC鍜孊PEL錛屾垜浠夋嫨BPEL錛屽師鍥犳槸IBM鏀寔BPEL錛屼笉瑕侀棶鎴戜袱縐嶄笢瑗塊偅縐嶆洿浼樼錛屾垜浼氬憡璇変綘錛氫綘鎼炴竻妤氫簡涔熸病鎰忎箟錛岀敤鎴峰彧鐩鎬俊IBM銆?br />聽聽聽聽聽 鏃㈢劧鐢˙PEL錛孖BM鐨刉ebsphere Process Server棣栧綋鍏跺啿錛岄」鐩粍涔頒簡鍑犵櫨涓囩殑杞歡鍜屾湇鍔″氨寮濮嬪紑鍙戜簡錛岃瀹炶瘽錛學PS鐪熺殑鏄竴涓緢濂界殑SOA瑙e喅鏂規錛屼絾鎴戜釜浜鴻涓虹粷瀵逛笉閫傚悎涓浗鏀垮簻銆佸浗浼佺殑嫻佺▼寮鍙戯紝鍥犱負浠栨棤娉曞緢濂界殑瑙e喅浜哄伐鑺傜偣鐨勯棶棰橈紝鍝曟槸寮曞叆浜唄uman task錛屼簬鏄垜浠張鑷繁灝佽浜嗕竴灞傚皬鐨勬祦紼嬪紩鎿庯紝褰撶劧鎴戞墍瑕佽鐨勯噸鐐逛笉鏄繖涓紝鑰屾槸鎴戜滑鍦╳ps涓墍闇瑕佺殑JCA鏂瑰紡緇戝畾鐨勭粍浠剁殑瀹炵幇鏂瑰紡錛欵JB+Spring+Hibernate錛屽仛濂界殑EJB鍖呭彲浠ヤ互EJB Bind鐨凧ava component褰㈠紡鎵撳叆wps鐨刟ssembly閲岋紝鍦╞pel process涓璻eference榪涙潵灝卞彲浠ヤ簡銆備笅闈㈡垜浠富瑕佽璇碋JB鐨勫疄鐜般?br />聽聽聽聽聽 鐢變簬wps鏈変釜鐗圭偣灝辨槸鍦ㄦ祦紼嬪疄渚嬬粨鏉熷悗鍒犻櫎鍏惰嚜甯︽暟鎹簱涓殑鎵鏈夊疄渚嬫暟鎹紝鎵浠ユ垜浠繀欏誨湪嫻佺▼鐨勬渶鍚庝竴閮ㄥ皢鏁版嵁璁板綍鍦ㄦ垜浠嚜宸辯殑涓氬姟搴撲腑鏉ワ紝鎴戜滑寮鍙戠殑EJB灝卞疄鐜頒簡榪欎釜鍔熻兘銆?br />棣栧厛鏄笟鍔¢昏緫錛屼笟鍔¢昏緫鍒嗘垚涓変釜鍖咃紝ejb銆乫ace銆乸ojo錛屽叾涓璭jb鏄粍浠剁殑鏈湴鎺ュ彛錛宖ace鏄粍浠剁殑鍔熻兘鎬ф帴鍙o紝pojo鏄叿浣撳疄鐜扮被銆?br />聽聽聽聽聽聽鍏蜂綋閫昏緫浠g爜涓嶈創浜嗭紝璐翠竴涓垜鍐欑殑渚嬪瓙錛?br />聽聽聽聽聽聽face涓殑鍔熻兘鎺ュ彛錛?/p>
package
聽com.ideal.core.biz.face;
2
3
import
聽java.rmi.RemoteException;
4
5
public
聽
interface
聽SimpleService聽
6
{
7
聽聽
public
聽String聽sayHello(String聽message)throws Exception;
8
}
9
聽聽聽ejb涓湰鍦版帴鍙o細package聽com.ideal.core.biz.ejb;
聽2
聽3import聽javax.ejb.EJBLocalObject;
聽4import聽com.ideal.core.biz.face.SimpleService;
聽5
聽6public聽interface聽SimpleLocal
聽7聽聽聽聽extends聽EJBLocalObject,聽SimpleService
聽8{
聽9聽聽聽聽public聽String聽sayHello(String聽message) throws Exception;
10}
11package聽com.ideal.core.biz.ejb;
聽2
聽3import聽javax.ejb.SessionBean;
聽4import聽javax.ejb.SessionContext;
聽5import聽javax.ejb.CreateException;
聽6import聽com.ideal.core.biz.face.SimpleService;
聽7import聽org.springframework.ejb.support.AbstractStatelessSessionBean;
聽8import聽java.rmi.RemoteException;
聽9
10public聽class聽SimpleBean
11聽聽聽聽extends聽AbstractStatelessSessionBean
12聽聽聽聽implements聽SimpleService
13{
14聽聽聽聽SessionContext聽sessionContext;
15聽聽聽聽private聽SimpleService聽m_simple_service;
16
17聽聽聽聽public聽void聽onEjbCreate()聽throws聽CreateException
18聽聽聽聽
{
19聽聽聽聽聽聽聽聽m_simple_service聽=聽(SimpleService)聽getBeanFactory().getBean("SimpleService");
20聽聽聽聽}
21
22聽聽聽聽public聽String聽sayHello(String聽message) throws Exception
23聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽String message = "";
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 try {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽message = m_simple_service.sayHello(message);
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 catch (Exception ex)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 this.sessionContext.setRollbackOnly();
聽聽聽聽聽聽聽聽聽聽聽 throw new EJBException();
聽聽聽聽聽聽聽 }
24聽聽聽聽聽聽聽聽return聽message;
25聽聽聽聽}
26}
27package聽com.ideal.core.biz.pojo;
聽2
聽3import聽com.ideal.core.biz.face.SimpleService;
聽4
聽5public聽class聽SimpleServiceImpl聽implements聽SimpleService
聽6{
聽7聽聽聽聽IUserInfoDAO聽user_dao;
聽8聽聽聽聽public聽SimpleServiceImpl()
聽9聽聽聽聽
{
10聽聽聽聽}
11聽聽聽聽public聽String聽sayHello(String聽message)聽聽throws聽Exception
12聽聽聽聽
{
13聽聽聽聽聽聽聽聽聽聽聽聽Userinfo聽user聽=聽new聽Userinfo();
14聽聽聽聽聽聽聽聽聽聽聽聽user.setName("2");
15聽聽聽聽聽聽聽聽聽聽聽聽user.setPassword("2");
16聽聽聽聽聽聽聽聽聽聽聽聽user.setUserid("2");
17聽聽聽聽聽聽聽聽聽聽聽聽user_dao.saveUser(user);
18聽聽聽聽聽聽聽聽聽聽聽聽user.setPassword("asddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
19聽聽聽聽聽聽聽聽聽聽聽聽user_dao.saveUser(user);
20聽聽聽聽聽聽聽聽return聽"hello,"聽+聽message聽+聽"!";
21聽聽聽聽}
22}
23
]]>
]]>
聽聽聽聽聽聽鎺ョ潃涓婃枃鏉ヨ錛屼笂鏂囨墍璁ㄨ鐨勬潈闄愯璁℃槸涓鏉℃濊礬錛屼絾鏃㈢劧鏄痺eb搴旂敤錛屽皯涓嶄簡鏁版嵁搴撶殑鏀寔錛屾湰鏂囨垜浠潵璁ㄨ涓涓嬫暟鎹簱鐨勮璁°傦紙浠ヤ笅鎯蟲硶鍙婃濊礬浠呬粎浠h〃鏈漢鎷欒錛?br />聽聽聽聽聽 璇村埌鏉冮檺鐨勬暟鎹簱璁捐錛屽繀鍏堢悊娓呮潈闄愪腑鍑犵瀹炰綋鍙婂叾鍏崇郴錛屾閮ㄥ垎鎯沖繀鏈夎繃璁捐鏉冮檺緇忛獙鐨勫悓浠侀兘鐭ラ亾鎬庝箞璁捐浜嗭紝緗戜笂鎽嗘浮涓涓嬩篃鏄竴瑁よ々瀛愪竴瑁よ々瀛愮殑錛屾垜浠氨鍦ㄦ渶騫沖嚒鐩磋鐨勬暟鎹簱鍏崇郴鐨勫熀紜涓婃潵寤虹珛鏉冮檺銆備笅闈㈡槸鎴戠殑鍑犱釜琛紙鎵鏈夌殑琛ㄩ兘甯︽湁涓涓猵k_id,浣滀負琛ㄧ殑鑷姩鐢熸垚鐨勫敮涓涓婚敭錛夛細
鐢ㄦ埛琛?T_UserInfo)錛?br />/**//*==============================================================*/
聽2/**//*聽Table:聽T_UserInfo聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽*/
聽3/**//*==============================================================*/
聽4create聽table聽T_UserInfo聽
聽5(
聽6聽聽聽聽pk_id聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽NUMBER聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽not聽null,
聽7聽聽聽聽name聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽VARCHAR2(20),
聽8聽聽聽聽sex聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽BOOLEAN,
聽9聽聽聽聽age聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽int,
10聽聽聽聽emp_num聽聽聽聽聽聽聽聽聽聽聽聽聽聽NUMBER,
11聽聽聽聽polity聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽int,
12聽聽聽聽unit聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽VARCHAR2(50),
13聽聽聽聽department聽聽聽聽聽聽聽聽聽聽聽VARCHAR2(20),
14聽聽聽聽specialty聽聽聽聽聽聽聽聽聽聽聽聽int,
15聽聽聽聽position聽聽聽聽聽聽聽聽聽聽聽聽聽VARCHAR2(10),
16聽聽聽聽offtel聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽VARCHAR2(20),
17聽聽聽聽famtel聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽VARCHAR2(20),
18聽聽聽聽post_state聽聽聽聽聽聽聽聽聽聽聽VARCHAR2(10),
19聽聽聽聽remark聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽VARCHAR2(100),
20聽聽聽聽constraint聽PK_T_USERINFO聽primary聽key聽(pk_id)
21);
/**//*==============================================================*/
聽2/**//*聽Table:聽T_RoleInfo聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽*/
聽3/**//*==============================================================*/
聽4create聽table聽T_RoleInfo聽
聽5(
聽6聽聽聽聽pk_id聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽number聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽not聽null,
聽7聽聽聽聽role_name聽聽聽聽聽聽聽聽聽聽聽聽VARCHAR2(20),
聽8聽聽聽聽role_desc聽聽聽聽聽聽聽聽聽聽聽聽VARCHAR2(100),
聽9聽聽聽聽parent_role_id聽聽聽聽聽聽聽NUMBER,
10聽聽聽聽constraint聽PK_T_ROLEINFO聽primary聽key聽(pk_id)
11);
/**//*==============================================================*/
聽2/**//*聽Table:聽T_ResourceInfo聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽*/
聽3/**//*==============================================================*/
聽4create聽table聽T_ResourceInfo聽
聽5(
聽6聽聽聽聽pk_id聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽NUMBER聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽not聽null,
聽7聽聽聽聽module_name聽聽聽聽聽聽聽聽聽聽VARCHAR2(20),
聽8聽聽聽聽module_code聽聽聽聽聽聽聽聽聽聽VARCHAR2(10),
聽9聽聽聽聽module_desc聽聽聽聽聽聽聽聽聽聽VARCHAR2(100),
10聽聽聽聽privilege_name聽聽聽聽聽聽聽VARCHAR2(10),
11聽聽聽聽privilege_code聽聽聽聽聽聽聽CHAR,
12聽聽聽聽privilege_desc聽聽聽聽聽聽聽VARCHAR2(100),
13聽聽聽聽constraint聽PK_T_RESOURCEINFO聽primary聽key聽(pk_id)
14);
15
渚嬪瑙掕壊a瀵規暟鎹簱琛═_UserInfo鏈夋坊鍔犱笌鍒犻櫎鐨勬潈闄愬垯璇ヨ〃搴旇鎸夌収濡備笅閰嶇疆錛?br />module_name錛氫漢鍛樹俊鎭紱
module_code錛歍_UserInfo
privilege_name錛氭坊鍔犱笌鍒犻櫎
privilege_code錛?
榪欓噷鎴戜滑鍋囪鐨勬槸2鐨?嬈℃柟涓烘坊鍔犳潈闄愶紝2鐨?嬈℃柟涓烘坊鍔犳潈闄愶紝2鐨?嬈℃柟涓哄垹闄ゆ潈闄愶紝2鐨?嬈℃柟涓烘洿鏂版潈闄愶紝鍒欐嫢鏈夋坊鍔犱笌鍒犻櫎鏉冮檺灝卞簲璇ヤ負2鐨?嬈℃柟+2鐨?嬈℃柟=6錛屽叾瀹?鐨勫嚑嬈℃柟浠h〃浠涔堝惈涔夋垜浠彲浠ュ彟澶栧紑涓暟鎹簱琛ㄦ潵閰嶇疆錛堟垨鑰厁ml鏂囦歡錛夋澶勬垜浠拷鐣ヨ繖浜涙楠ゃ傚綋鐒跺鏋滀綘鐨勬潈闄愯緝澶氾紝璀浣犺繕甯屾湜a榪欎釜瑙掕壊瀵逛漢鍛樹俊鎭〃鏈変笂浼犲緱鏉冮檺錛屾垜浠彲浠ュ皢灝嗕笂浼犳潈闄愬畾涔変負2鐨?嬈℃柟錛?6錛?6鐨?6榪涘埗鏁頒負10錛岃褰曞湪鏁版嵁搴撻噷鐨勫艦寮忓簲璇ヤ負0x10濡傛灉a瑙掕壊鎷ユ湁娣誨姞銆佸垹闄ゃ佹洿鏂般佷笂浼犳潈闄愶紝鍒檃鐨勬潈鍊煎簲璇ヤ負2鐨?嬈℃柟+2鐨?嬈℃柟+2鐨?嬈℃柟+2鐨?嬈℃柟=30,鐢?6榪涘埗鏉ヨ〃紺哄氨搴旇涓?x1E錛岃褰?6榪涘埗鏁版嵁錛屼綘涓嶇敤鎷呭績浣嶆暟涓嶅銆?br />鍓╀綑鐨勫氨鏄嚑寮犲叧緋昏〃浜嗭細
浜哄憳瑙掕壊鍏崇郴琛?T_R_User_Role)錛?br />/**//*==============================================================*/
聽2/**//*聽Table:聽T_R_user_role聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽*/
聽3/**//*==============================================================*/
聽4create聽table聽T_R_user_role聽
聽5(
聽6聽聽聽聽pk_id聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽NUMBER聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽not聽null,
聽7聽聽聽聽user_id聽聽聽聽聽聽聽聽聽聽聽聽聽聽NUMBER,
聽8聽聽聽聽role_id聽聽聽聽聽聽聽聽聽聽聽聽聽聽NUMBER,
聽9聽聽聽聽constraint聽PK_T_R_USER_ROLE聽primary聽key聽(pk_id)
10);
11/**//*==============================================================*/
聽2/**//*聽Table:聽T_R_role_resource聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽*/
聽3/**//*==============================================================*/
聽4create聽table聽T_R_role_resource聽
聽5(
聽6聽聽聽聽pk_id聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽NUMBER聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽not聽null,
聽7聽聽聽聽role_id聽聽聽聽聽聽聽聽聽聽聽聽聽聽NUMBER,
聽8聽聽聽聽res_id聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽NUMBER,
聽9聽聽聽聽constraint聽PK_T_R_ROLE_RESOURCE聽primary聽key聽(pk_id)
10);
11
]]>
鐜板湪欏圭洰寮灞曡搗鏉ヤ簡錛岃櫧鐒剁洰鍓嶆垜宸茬粡鏈変簡瀵規潈闄愭帶鍒剁殑涓濂楁柟妗堬紝騫朵笖瀹炴柦鎴愪簡鎴戠殑鍙噸鐢ㄦ鏋朵唬鐮侊紝铏界劧鐩墠鐨勬潈闄愪篃鏄熀浜庝紬鏄熸崸鏈堢殑AOP鎬濇兂錛屼絾鎴戣嚦浠婂鏉冮檺璁捐浠嶆湁涓や釜鐤戞儜錛?
鐤戞儜涓錛氬緢澶氬悓琛屾彁鍑烘柟妗堬紝鎯寵鍦ㄥ簳灞傚氨鎴彇鐢ㄦ埛鏉冮檺錛屾帶鍒剁敤鎴峰鏂規硶鎴栬呯被鐨勮闂傝繖鏍峰仛鐨勫ソ澶勫湪浜庡彲浠ュ皢緋葷粺鍔熻兘涓庝笟鍔¢昏緫鏉炬暎鑰﹀悎錛屽茍涓斿疄鐜扮畝鍗曪紝緇撴瀯娓呮櫚錛屼笁涓や釜advisor銆乫ilter錛屾垨鑰卆cegi灝辮兘鎼炲畾錛屼絾鍦╳eb紼嬪簭涓綋鐜板嚭浜嗕粬鐨勫姡鍔匡紝褰撴垜浠皢鐢ㄦ埛鐨勮闂嫆緇濆湪涓氬姟閫昏緫涔嬪鐨勬椂鍊欙紝鎴戜滑姝ゆ椂鏄惁搴旇鎶涘嚭寮傚父鎻愮ず鐢ㄦ埛錛熶竴鏃︽彁紺虹敤鎴鋒病鏈夌浉搴旂殑鏉冮檺錛屾垜璁や負瀵逛簬鐢ㄦ埛鏉ヨ錛岃繖灝變笉鏄竴涓猵erfect practice銆傜敱姝ゅ緱鍑猴紝鎴戜滑鏍規湰灝變笉搴旇璁╃敤鎴峰仛姝ゆ鎿嶄綔錛岃屾帶鍒剁敤鎴鋒搷浣滅殑婧愬ご灝辨槸鐣岄潰錛屼篃灝辨槸璇達紝鍦ㄧ晫闈笂鎴戜滑灝卞簲璇ュ鐢ㄦ埛鐨勬潈闄愬厓绱?濡傛坊鍔犳寜閽佸姛鑳借彍鍗曠瓑)榪涜鎺у埗銆傛鏃訛紝涓瀵圭煕鐩懼嚭鐜頒簡錛岃鎺у埗鐣岄潰涓婂艦褰㈣壊鑹茬殑鍏冪礌鍙湁涓ょ鍔炴硶錛屼竴錛屽皢鏉冮檺涓庝綘鐨勭晫闈㈢粨鍚堣搗鏉ヨ璁★紝榪欏皢榪濊儗AOP鐨勬濇兂錛屼篃浣垮緱緋葷粺鎺у埗妯″潡鐨勯噸鐢ㄦуぇ澶т笅闄嶏紝浜岋紝鎴戜滑鍊熼壌primeton鐨勬兂娉曪紝灝嗘潈闄愭帶鍒剁殑鐞嗗康鎶藉彇鍑烘潵錛屽崟鐙仛鎴愪竴濂楁潈闄愮郴緇燂紝瑙e喅浣犳墍鏈夌殑闇瑕佹潈闄愭帶鍒剁殑緋葷粺闇姹傦紝榪欐牱涔熸湁浠や漢澶寸棝鐨勯棶棰橈紝浣犵殑鎵鏈夋兂鐢ㄥ畠鏉ユ帶鍒舵潈闄愮殑緋葷粺錛屽繀欏葷晫闈笂緇熶竴椋庢牸銆傛垨璁歌繖鏍風殑鏂瑰紡瀵瑰晢涓歸eb緋葷粺鏄悎閫傜殑錛屾瘯绔熼渶瑕佷綘澶у垁闃旀枾涓у寲鐨勫湴鏂逛笉澶氾紝浣嗘垜浠嵈寰堥毦淇濊瘉鍦ㄦ湭鏉ュ嚑騫村唴鍟嗕笟web緋葷粺鐨勯鏍間笉鏀瑰彉銆傚啀鑰咃紝寮鍙戣繖涔堜竴涓郴緇熶篃涓嶆槸涓韞磋屽氨鐨勪簨錛屽湪榪欎釜闂涓婁竴鐩磋鎴戝洶鎯戜笉宸層?/p>
鐤戞儜浜岋細澶у搴旂敤鐨勬潈闄愬垽瀹氭槸鍩轟簬鏉冮檺瀛楃涓茬殑錛屼絾瀛樺偍鍦ㄦ暟鎹簱涓殑鏉冮檺瀛楃涓茶兘澶熷垽瀹氱殑鏉冮檺騫朵笉澶氾紝鍦ㄦ垜浠繖嬈¢」鐩腑錛屾垜寮曠敤浜嗗熀浜庝簩榪涘埗鐨?421鏉冮檺鍒ゅ畾娉曞垯錛屾垜娣辨繁鐨勬劅瑙夊埌鏉冮檺瀛楃涓茬殑寮卞娍錛岃繖浣挎垜鎯寵搗浜嗕腑鍥藉彜鑰佷竴濂楁暟瀛︾悊璁?鈥滅泩涓嶈凍鏈濓紝瓚呴掑搴忓垪鐨勯瓍鍔涘湪鎴戠溂鍓嶆粦榪囷紝
棣栧厛鎴戞潵瑙i噴涓涓嬬泩浣欎笉瓚崇悊璁猴細鏈夊崄鍙洅瀛愶紝絎竴涓洅瀛愰噷鏀句竴涓洏瀛愶紝絎簩涓洅瀛愰噷鏀句袱鍙紝絎笁涓洅瀛愰噷鏀懼洓鍙紝絎洓涓洅瀛愰噷鏀懼叓鍙︹︾涔濅釜鐩掑瓙閲屾斁256鍙紝絎崄涓洅瀛愭斁512鍙紝鍗崇N鍙瀛愰噷鏀?^(N-1)鍙洏瀛愶紝涓鍏?023鍙傞偅涔堝懡棰樺涓嬶細鍦?023榪欎釜鏁板瓧涔嬪唴錛屼換浣曚竴涓暟鐩兘鍙互鐢辮繖鍗佸彧鐩掑瓙閲岀殑鍑犲彧緇勫悎鐩稿姞鑰屾垚銆傞偅涔?銆?銆?銆?銆?6銆?2銆?4銆?28銆?56銆?12榪欎釜搴忓垪涓轟粈涔堟湁榪欎箞涓瓟鍔涳紵榪欎釜鏁板垪鐨勭壒鐐癸細1銆佹瘡欏規槸鍚庝竴欏圭殑浜屽嶏紝2銆佹瘡欏歸兘姣斿墠闈㈡墍鏈夐」鐨勫拰澶э紝鑰屼笖澶?銆傝繖涓?灝辨槸鍏抽敭錛屽氨鍥犱負榪欎釜1錛屽畠鎵嶅彲浠ユ寜1閫掑錛屾嫾鍑烘誨拰涔嬪唴浠繪剰涓涓暣鏁般傝繖涓簭鍒楀彨鍋氳秴閫掑搴忓垪錛屽畠鏄В鍐寵儗鍖呴棶棰樼殑鍩虹銆?銆佹嫾鍑烘誨拰涔嬪唴浠繪剰涓涓暣鏁板彲浠ョ敱榪欎釜搴忓垪涓殑涓浜涙暟鏋勬垚錛屼笖鏋勬垚鏂規硶鍞竴錛屾嵁璇存槸瀵嗙爜瀛︿腑鐨凬P瀹氱悊銆傝濡傝榪欎釜鏁板垪鎬誨悎涓?0榪欎釜鏁幫紝鍙兘鐢?6+4涓縐嶆柟娉曟瀯鎴愶紝鐢辨寤朵幾鍑烘潵錛屽鏋滅患鍚堜腑榪欎釜鏁版嵁浠h〃涓涓潈鍊鹼紝鎴戜滑鍙互瑙e嚭瀹冪殑鎵鏈夋瀯鎴愬弬鏁幫紙鎿嶄綔錛夛紝濡?0榪欎釜鏁版嵁錛屾垜浠彲浠ユ尐涓拰搴忓垪涓瘡涓欏規寜浣嶄笌錛屽緱鍑烘潵濡傛灉涓嶇瓑浜?錛屽氨璇存槑浠栨槸鐢辮繖涓暟鏋勬垚鐨勩?
淇濆瓨鏉冨煎埌int榪樻槸varchar瀵逛簬鎴戜滑鏉ヨ鏄釜闂錛屽綋鐒訛紝淇濆瓨瀛楃涓茬殑濂藉鏄繍綆楀帇鍔涘皬銆傛垜浠彲鑳藉惉榪囦竴涓晠浜嬶紝灝辨槸鎶婅繖涓秴閫掑搴忓垪寤朵幾鍒扮64欏癸紝灝辨槸閭d釜鏈+鍜岀殗甯濆湪鍥介檯璞℃媯嬬洏涓婅綾崇矑鐨勪紶璇淬?4欏圭殑鍜屾槸涓涓ぉ鏂囨暟瀛楋紒浣嗚綆楁満鏈韓灝辨槸涓涓彧璁よ瘑浜岃繘鍒剁殑鏈哄櫒錛佸緢澶氱▼搴忓憳鏁村ぉ鍙叧蹇冩灦鏋勶紝鐢氳嚦涓嶇煡閬撴垨鑰呬笉鍏沖績浣嶆搷浣滄槸浠涔堢帺鎰忥紝褰撶劧鎴戜滑鏈夋湅鍙嬫媴蹇冩暟鎹簱鐨刬nt涓嶅闀匡紝閭d箞鏃㈢劧鍙互淇濆瓨涓涓彧鏈?銆?緇勬垚鐨剉archar瀛楃涓詫紝涓轟粈涔堜笉鑳戒繚瀛樹竴涓崄鍏繘鍒剁殑瀛楃涓詫紝鏈変漢瑙勫畾varchar鍙兘淇濆瓨01鍚楋紵鍗佸叚榪涘埗涓茬殑闀垮害姝eソ鏄簩榪涘埗鐨勫洓鍒嗕箣涓銆?
鐢辨鎴戜滑鍙互鏃犻檺鍒剁殑鎵╁睍鏉冨兼搷浣溿?
鍦ㄦ渶榪戠殑欏圭洰閲岋紝鎴戝鏉冮檺鐨勬帶鍒跺垎鎴愪袱涓儴鍒嗭紝絎竴灝辨槸鐢ㄦ埛浣撻獙涓婏紝鎴戣緗簡涓涓潈闄愭爣絳撅紝浠庢暟鎹簱涓娊鍙栨潈闄愪俊鎭紝鐒跺悗鍋氬埌鏍囩閲岋紝涔熷噾鎴栫畻鎴愭槸鐣岄潰AOP浜嗭紝絎簩灝辨槸搴曞眰鐨勬嫤鎴紝鐢ㄤ簡Spring 鐨凙OP錛屼負鐨勬槸闃叉鏉冮檺鍐茬獊錛屽弻綆¢綈涓嬨傛殏鏃惰В鍐蟲潈闄愭墍闇錛屽彟澶栧湪綆楁硶涓婃垜鐢ㄤ簡16榪涘埗鐨勬潈闄愬垽鍒唬鐮侊紝铏界劧閰嶇疆杈冮夯鐑︼紝鍐欏畬浠g爜榪樿鍐欐枃妗h鏄庯紝涓嶈繃涔熻В鍐充簡鏉冮檺綣佹潅鍙堝鐨勯棶棰橈紝鏆傛椂灝辮繖鏍蜂簡錛屽樋鍢匡紝浠ュ悗鏈夌┖鍐嶇爺絀躲?