- 浏览: 667870 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
本文介绍bbossgroups 持久层框架动态创建、启动、停止和使用多个数据源的方法,直接看代码,欢迎大家一起讨论,有疑问可相互交流。
//启动一个连接池数据源
DBUtil.startPool(dbname, dbdriver, dburl, dbuser, dbpassword,
validationQuery);
//启动一个非连接池数据源
DBUtil.startNoPool(dbname, dbdriver, dburl, dbuser, dbpassword,
validationQuery);
停止数据源:
DBUtil.stopPool(dbname);//停止指定数据源名称
DBUtil.stopPool();//停止默认数据源(poolman.xml中的排在第一个位置的数据源)
通过以下一组接口你可以非常方便地动态创建和管理连接池,包括启动,停止,状态检测,可以根据需要调用相应的启动和创建方法,呵呵
补充说明,bboss数据库类型名称和适配器映射关系:
adapters.put("as400", DBDB2400.class);
adapters.put("db2app", DBDB2App.class);
adapters.put("db2net", DBDB2Net.class);
adapters.put("cloudscape", DBCloudscape.class);
adapters.put("hypersonic", DBHypersonicSQL.class);
adapters.put("interbase", DBInterbase.class);
adapters.put("instantdb", DBInstantDB.class);
adapters.put("mssql", DBMSSQL.class);
adapters.put("mysql", DBMM.class);
adapters.put("oracle", DBOracle.class);
adapters.put("postgresql", DBPostgres.class);
adapters.put("sapdb", DBSapDB.class);
adapters.put("sybase", DBSybase.class);
adapters.put("weblogic", DBWeblogic.class);
adapters.put("axion", DBAxion.class);
adapters.put("informix", DBInformix.class);
adapters.put("odbc", DBOdbc.class);
adapters.put("msaccess", DBOdbc.class);
adapters.put("derby", DBDerby.class);
adapters.put("", DBNone.class);
在应用启动的时候就要加载起来,bboss持久层的使用文档请关注博客中的相关介绍持久层的文章:
http://yin-bp.iteye.com/category/55607
//启动一个连接池数据源
DBUtil.startPool(dbname, dbdriver, dburl, dbuser, dbpassword,
validationQuery);
//启动一个非连接池数据源
DBUtil.startNoPool(dbname, dbdriver, dburl, dbuser, dbpassword,
validationQuery);
停止数据源:
DBUtil.stopPool(dbname);//停止指定数据源名称
DBUtil.stopPool();//停止默认数据源(poolman.xml中的排在第一个位置的数据源)
@Test public void stopPool() { try { DBUtil.stopPool(null); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void startPool() { try { DBUtil.getJDBCPoolMetaData(null); DBUtil.startPool(null); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testExternalMeta() { try { DBUtil.startPool(null); JDBCPoolMetaData meta = DBUtil.getJDBCPoolMetaData("mq"); JDBCPool pool = DBUtil.getPool("mq"); PoolmanStatic sss = new PoolmanStatic(); TransferObjectFactory.createTransferObject(meta, sss); System.out.println(pool.getStartTime()); System.out.println(pool.getStopTime()); System.out.println(pool.getStatus()); sss.isExternal(); DBUtil.stopPool("bspf"); System.out.println(pool.getStartTime()); System.out.println(pool.getStopTime()); System.out.println(pool.getStatus()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testMeta() { try { DBUtil.startPool(null); JDBCPoolMetaData meta = DBUtil.getJDBCPoolMetaData("bspf"); JDBCPool pool = DBUtil.getPool("bspf"); PoolmanStatic sss = new PoolmanStatic(); TransferObjectFactory.createTransferObject(meta, sss); System.out.println(pool.getStartTime()); System.out.println(pool.getStopTime()); System.out.println(pool.getStatus()); sss.isExternal(); DBUtil.stopPool("bspf"); PreparedDBUtil db = new PreparedDBUtil(); db.preparedSelect("Select 1 from dual"); db.executePrepared(); System.out.println(pool.getStartTime()); System.out.println(pool.getStopTime()); System.out.println(pool.getStatus()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void startstopExterPool() { try { // DBUtil.stopPool("mq"); System.out.println("DBUtil.statusCheck(\"mq\"):"+DBUtil.statusCheck("mq")); System.out.println("DBUtil.statusCheck(\"bspf\"):"+DBUtil.statusCheck("bspf")); System.out.println("DBUtil.statusCheck(\"kettle\"):"+DBUtil.statusCheck("kettle")); DBUtil dbutil= new DBUtil(); try { dbutil.executeSelect("mq", "Select 1 from dual"); System.out.println("dbutil.size():" + dbutil.size()); } catch (Exception e) { e.printStackTrace(); } DBUtil.startPool("mq"); dbutil = new DBUtil(); dbutil.executeSelect("mq","Select 1 from dual"); System.out.println("dbutil.size():" + dbutil.size()); System.out.println("DBUtil.statusCheck(\"mq\"):"+DBUtil.statusCheck("mq")); System.out.println("DBUtil.statusCheck(\"bspf\"):"+DBUtil.statusCheck("bspf")); System.out.println("DBUtil.statusCheck(\"kettle\"):"+DBUtil.statusCheck("kettle")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testStartPool() { TransactionManager tm = new TransactionManager(); try { DBUtil dbutil = new DBUtil(); String name = "db", driver="oracle.jdbc.driver.OracleDriver", jdbcurl="jdbc:oracle:thin:@//172.16.25.219:1521/orcl", username="baseline", password="baseline", readOnly="true", validationQuery="select 1 from dual"; DBUtil.startPool("db", driver, jdbcurl, username, password, readOnly, validationQuery); tm.begin(); dbutil.executeSelect("db","Select 1 from dual"); tm.commit(); System.out.println("dbutil.size():" + dbutil.size()); DBUtil.stopPool("db"); PreparedDBUtil db = new PreparedDBUtil(); db.preparedSelect("db","Select 1 from dual"); db.executePrepared(); // dbutil.executeSelect("db","Select 1 from dual"); } catch(Exception e) { e.printStackTrace(); } } @Test public void testDBStatusStatic() throws SQLException { int numactive = DBUtil.getNumActive("mysql"); int numIdle = DBUtil.getNumIdle("mysql"); DBUtil.getConection("mysql"); List<PoolableConnection> objects = (List<PoolableConnection>)DBUtil.getTraceObjects("mysql"); for(int i = 0; objects != null && i < objects.size(); i ++) { PoolableConnection con = objects.get(i); System.out.println(con.getAutoCommit()); System.out.println(con.toString()); } System.out.println(); // int numactive = DBUtil.getNumActive("bspf"); } @Test public void testStartPoolFromConf() { String configfile = "custom_poolman.xml"; SQLUtil.startPoolFromConf(configfile); DBUtil dbutil = new DBUtil(); try { dbutil.executeSelect("bspf_custom_1","Select * from tableinfo"); System.out.println("bspf_custom_1:"+dbutil.size()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { dbutil.executeSelect("bspf_custom","Select * from tableinfo"); System.out.println("bspf_custom:"+dbutil.size()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void startPoolFromConf() { String configfile = "custom_poolman.xml"; String dbnamespace = "test"; SQLUtil.startPoolFromConf(configfile,dbnamespace); DBUtil dbutil = new DBUtil(); try { dbutil.executeSelect("test:bspf_custom_1","Select * from tableinfo"); System.out.println("test:bspf_custom_1:"+dbutil.size()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { dbutil.executeSelect("test:bspf_custom","Select * from tableinfo"); System.out.println("test:bspf_custom:"+dbutil.size()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { dbutil.stopPool("test:bspf_custom_1"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } try { dbutil.stopPool("test:bspf_custom"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void startPoolFromConfWithAllParams() { String configfile = "custom_poolman.xml"; String dbnamespace = "test"; String[] dbnames = new String[]{"bspf_custom_1"}; SQLUtil.startPoolFromConf(configfile,dbnamespace,dbnames); DBUtil dbutil = new DBUtil(); try { dbutil.executeSelect("test:bspf_custom_1","Select * from tableinfo"); System.out.println("test:bspf_custom_1:"+dbutil.size()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { dbutil.executeSelect("test:bspf_custom","Select * from tableinfo"); System.out.println("test:bspf_custom:"+dbutil.size()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void startPoolFromConfNulldbnamespace() { String configfile = "custom_poolman.xml"; String dbnamespace = null; String[] dbnames = new String[]{"bspf_custom_1"}; SQLUtil.startPoolFromConf(configfile,dbnamespace,dbnames); DBUtil dbutil = new DBUtil(); try { dbutil.executeSelect("bspf_custom_1","Select * from tableinfo"); System.out.println("bspf_custom_1:"+dbutil.size()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { dbutil.executeSelect("bspf_custom","Select * from tableinfo"); System.out.println("bspf_custom:"+dbutil.size()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testStartPoolFromTempate() throws SQLException { DBUtil.getConection(); String poolname = "bspf-custom"; String driver = "org.apache.derby.jdbc.EmbeddedDriver"; String jdbcurl = "jdbc:derby:D:/workspace/bbossgroups-3.1/bboss-mvc/database/cimdb"; String username = ""; String password = ""; String readOnly = "false"; String txIsolationLevel = "READ_COMMITTED"; String validationQuery = "select 1 from dual"; String jndiName = "jdbc/derby-ds-custom"; int initialConnections = 2; int minimumSize = 0; int maximumSize = 10; boolean usepool = true; boolean external = true; String externaljndiName = "jdbc/derby-ds"; boolean showsql = true; SQLUtil.startPool( poolname, driver, jdbcurl, username, password, readOnly, txIsolationLevel, validationQuery, jndiName, initialConnections, minimumSize, maximumSize, usepool, external, externaljndiName , showsql ); }
通过以下一组接口你可以非常方便地动态创建和管理连接池,包括启动,停止,状态检测,可以根据需要调用相应的启动和创建方法,呵呵
DBUtil.stopPool DBUtil.startPool DBUtil.statusCheck DBUtil.startPool("db", driver, jdbcurl, username, password, readOnly, validationQuery); SQLUtil.startPoolFromConf(configfile); SQLUtil.startPoolFromConf(configfile,dbnamespace); SQLUtil.startPoolFromConf(configfile,dbnamespace,dbnames); SQLUtil.startPool( poolname, driver, jdbcurl, username, password, readOnly, txIsolationLevel, validationQuery, jndiName, initialConnections, minimumSize, maximumSize, usepool, external, externaljndiName , showsql );
补充说明,bboss数据库类型名称和适配器映射关系:
adapters.put("as400", DBDB2400.class);
adapters.put("db2app", DBDB2App.class);
adapters.put("db2net", DBDB2Net.class);
adapters.put("cloudscape", DBCloudscape.class);
adapters.put("hypersonic", DBHypersonicSQL.class);
adapters.put("interbase", DBInterbase.class);
adapters.put("instantdb", DBInstantDB.class);
adapters.put("mssql", DBMSSQL.class);
adapters.put("mysql", DBMM.class);
adapters.put("oracle", DBOracle.class);
adapters.put("postgresql", DBPostgres.class);
adapters.put("sapdb", DBSapDB.class);
adapters.put("sybase", DBSybase.class);
adapters.put("weblogic", DBWeblogic.class);
adapters.put("axion", DBAxion.class);
adapters.put("informix", DBInformix.class);
adapters.put("odbc", DBOdbc.class);
adapters.put("msaccess", DBOdbc.class);
adapters.put("derby", DBDerby.class);
adapters.put("", DBNone.class);
评论
8 楼
yin_bp
2012-10-23
在发布的版本中/bestpractices下有个persistent工程就是持久的示例工程
7 楼
yin_bp
2012-10-23
lx13345 写道
custom_poolman.xml这个应该在哪里被加载?
在应用启动的时候就要加载起来,bboss持久层的使用文档请关注博客中的相关介绍持久层的文章:
http://yin-bp.iteye.com/category/55607
6 楼
lx13345
2012-10-23
不用别的框架,就用bboss,该如何?给个完整的例子?
5 楼
lx13345
2012-10-23
需要我手动编写一个类来加载,完成数据源的获取,?
4 楼
lx13345
2012-10-23
或者说,我编写dao的时候,。。。?有些迷茫,
3 楼
lx13345
2012-10-23
custom_poolman.xml这个应该在哪里被加载?
2 楼
yin_bp
2011-06-29
custom_poolman.xml文件的内容:
<?xml version="1.0" encoding="gb2312"?> <poolman> <management-mode>local</management-mode> <datasource> <dbname>bspf_custom</dbname> <loadmetadata>false</loadmetadata> <jndiName>jdbc/mysql-ds</jndiName> <driver>com.mysql.jdbc.Driver</driver> <url>jdbc:mysql://172.16.25.139:3306/cim</url> <username>root</username> <password>123456</password> <txIsolationLevel>READ_COMMITTED</txIsolationLevel> <nativeResults>true</nativeResults> <poolPreparedStatements>false</poolPreparedStatements> <initialConnections>2</initialConnections> <minimumSize>0</minimumSize> <maximumSize>10</maximumSize> <!--控制connection达到maximumSize是否允许再创建新的connection true:允许,缺省值 false:不允许--> <maximumSoft>false</maximumSoft> <!-- 是否检测超时链接(事务超时链接) true-检测,如果检测到有事务超时的链接,系统将强制回收(释放)该链接 false-不检测,默认值 --> <removeAbandoned>true</removeAbandoned> <!-- 链接使用超时时间(事务超时时间) 单位:秒 --> <userTimeout>50</userTimeout> <!-- 系统强制回收链接时,是否输出后台日志 true-输出,默认值 false-不输出 --> <logAbandoned>true</logAbandoned> <!-- 数据库会话是否是readonly,缺省为false --> <readOnly>false</readOnly> <!-- 对应属性:timeBetweenEvictionRunsMillis the amount of time (in milliseconds) to sleep between examining idle objects for eviction --> <skimmerFrequency>10</skimmerFrequency> <!--对应于minEvictableIdleTimeMillis 属性: minEvictableIdleTimeMillis the minimum number of milliseconds an object can sit idle in the pool before it is eligable for evcition 单位:秒 空闲链接回收时间,空闲时间超过指定的值时,将被回收 --> <connectionTimeout>60</connectionTimeout> <!-- numTestsPerEvictionRun the number of idle objects to examine per run within the idle object eviction thread (if any) 每次回收的链接个数 --> <shrinkBy>5</shrinkBy> <!-- /** * 检测空闲链接处理时,是否对空闲链接进行有效性检查控制开关 * true-检查,都检查到有无效链接时,直接销毁无效链接 * false-不检查,缺省值 */ --> <testWhileidle>true</testWhileidle> <!-- 定义数据库主键生成机制 缺省的采用系统自带的主键生成机制, 外步程序可以覆盖系统主键生成机制 由值来决定 auto:自动,一般在生产环境下采用该种模式, 解决了单个应用并发访问数据库添加记录产生冲突的问题,效率高,如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式 composite:结合自动和实时从数据库中获取最大的主键值两种方式来处理,开发环境下建议采用该种模式, 解决了多个应用同时访问数据库添加记录时产生冲突的问题,效率相对较低, 如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式 --> <keygenerate>composite</keygenerate> <!--poolman的日志信息输出改用log4j来输出到日志文件,相关的配置见log4j.properties文件--> <!--<logFile>dbaccess.log</logFile> <debugging>true</debugging>--> <!-- 请求链接时等待时间,单位:秒 客服端程序请求链接等待时间超过指定值时,后台包等待超时异常 --> <maxWait>60</maxWait> <!-- 链接有效性检查sql语句 --> <validationQuery>select 1</validationQuery> <autoprimarykey>false</autoprimarykey> <showsql>false</showsql> </datasource> <datasource> <dbname>bspf_custom_1</dbname> <loadmetadata>false</loadmetadata> <jndiName>jdbc/mysql-ds-1</jndiName> <driver>com.mysql.jdbc.Driver</driver> <url>jdbc:mysql://172.16.25.139:3306/cim</url> <username>root</username> <password>123456</password> <txIsolationLevel>READ_COMMITTED</txIsolationLevel> <nativeResults>true</nativeResults> <poolPreparedStatements>false</poolPreparedStatements> <initialConnections>2</initialConnections> <minimumSize>0</minimumSize> <maximumSize>10</maximumSize> <!--控制connection达到maximumSize是否允许再创建新的connection true:允许,缺省值 false:不允许--> <maximumSoft>false</maximumSoft> <!-- 是否检测超时链接(事务超时链接) true-检测,如果检测到有事务超时的链接,系统将强制回收(释放)该链接 false-不检测,默认值 --> <removeAbandoned>true</removeAbandoned> <!-- 链接使用超时时间(事务超时时间) 单位:秒 --> <userTimeout>50</userTimeout> <!-- 系统强制回收链接时,是否输出后台日志 true-输出,默认值 false-不输出 --> <logAbandoned>true</logAbandoned> <!-- 数据库会话是否是readonly,缺省为false --> <readOnly>false</readOnly> <!-- 对应属性:timeBetweenEvictionRunsMillis the amount of time (in milliseconds) to sleep between examining idle objects for eviction --> <skimmerFrequency>10</skimmerFrequency> <!--对应于minEvictableIdleTimeMillis 属性: minEvictableIdleTimeMillis the minimum number of milliseconds an object can sit idle in the pool before it is eligable for evcition 单位:秒 空闲链接回收时间,空闲时间超过指定的值时,将被回收 --> <connectionTimeout>60</connectionTimeout> <!-- numTestsPerEvictionRun the number of idle objects to examine per run within the idle object eviction thread (if any) 每次回收的链接个数 --> <shrinkBy>5</shrinkBy> <!-- /** * 检测空闲链接处理时,是否对空闲链接进行有效性检查控制开关 * true-检查,都检查到有无效链接时,直接销毁无效链接 * false-不检查,缺省值 */ --> <testWhileidle>true</testWhileidle> <!-- 定义数据库主键生成机制 缺省的采用系统自带的主键生成机制, 外步程序可以覆盖系统主键生成机制 由值来决定 auto:自动,一般在生产环境下采用该种模式, 解决了单个应用并发访问数据库添加记录产生冲突的问题,效率高,如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式 composite:结合自动和实时从数据库中获取最大的主键值两种方式来处理,开发环境下建议采用该种模式, 解决了多个应用同时访问数据库添加记录时产生冲突的问题,效率相对较低, 如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式 --> <keygenerate>composite</keygenerate> <!--poolman的日志信息输出改用log4j来输出到日志文件,相关的配置见log4j.properties文件--> <!--<logFile>dbaccess.log</logFile> <debugging>true</debugging>--> <!-- 请求链接时等待时间,单位:秒 客服端程序请求链接等待时间超过指定值时,后台包等待超时异常 --> <maxWait>60</maxWait> <!-- 链接有效性检查sql语句 --> <validationQuery>select 1</validationQuery> <autoprimarykey>false</autoprimarykey> <showsql>false</showsql> </datasource> <datasource external="true"> <dbname>mq</dbname> <externaljndiName>jdbc/mysql-ds</externaljndiName> <showsql>false</showsql> </datasource> <datasource external="true"> <dbname>kettle</dbname> <externaljndiName>jdbc/mysql-ds</externaljndiName> <showsql>false</showsql> </datasource> </poolman>
1 楼
yin_bp
2011-06-29
欢迎大家一起交流,呵呵
发表评论
-
bboss 持久层数据源引用外部属性配置介绍
2018-12-29 21:47 982bboss 持久层数据源外部属性配置引用介绍 bboss持久 ... -
bboss持久层开启和关闭自带主键机制
2017-08-17 11:56 688bboss持久层开启和关闭自带主键机制 请访问文档: bbos ... -
bboss高性能db批处理功能使用方法介绍
2017-05-14 21:28 2056bboss持久层在v5.0.3.5中新增简单的高效的db批处理 ... -
bboss持久层公共sql片段定义和引用方法说明
2017-03-03 13:05 1057bboss持久层公共sql片段定义和引用方法说明 在配置sq ... -
最新版本mysql jdbc驱动包获取表定义信息空指针异常处理方法
2016-12-15 10:24 1269在使用最新的mysql-connector-java 6.0. ... -
持久层快速入门系列一
2016-08-19 13:00 1202持久层快速入门 先在应用中导入bboss 持久层(bboss ... -
bboss与spring中配置和引用bboss数据源和bboss dao组件方法说明
2016-08-10 16:04 861首先在项目中导入bboss 持久层包: maven坐标 & ... -
bboss 持久层sql xml配置文件编写和加载方法介绍
2016-04-05 13:14 1527bboss 持久层sql xml配置文件编写和加载方法介绍 通 ... -
bboss持久层设置数据库查询fetchsize参数方法
2015-11-06 11:54 956bboss持久层设置数据库查询fetchsize参数方法 j ... -
bboss持久层快速入门教程
2015-09-19 13:49 1519bboss持久层快速入门教程,快速搭建bboss持久层的开 ... -
bboss持久层数据库适配器编写和注册方法
2015-02-06 15:21 919bboss持久层数据库适配器编写和注册方法 bboss持久层默 ... -
bboss模糊查询、动态sql、批处理资料荟萃
2015-01-30 12:03 2262bboss模糊查询、动态sql、批处理资料荟萃 bboss持 ... -
bboss持久层查询元数据缓存机制开启方法
2014-11-18 12:03 964bboss持久层为了提升数据库查询操作性能,提供了对查 ... -
bboss开发、模块工程目录结构及功能说明
2014-10-15 19:46 4706基于bboss开发项目说明 ... -
bboss内置数据源apache dbcp与druid数据源切换方法
2014-09-23 09:59 1319bboss内置数据源与druid数据源切换方法 bboss内置 ... -
bboss持久层多数据源配置及多数据库事务控制使用方法
2014-05-11 20:24 2844bboss持久层多数据源配置及使用方法,持久层框架及demo下 ... -
bboss持久层demo使用说明
2014-03-11 09:38 1118持久层案例可以用svn客户端下载eclipse工程,导入ecl ... -
bboss持久层More分页查询API使用介绍
2013-10-18 16:17 1316为了更好地提高数据库分页查询的效率,bboss持久层在Conf ... -
bboss持久层操作Clob和Blob字段示例
2013-09-09 13:29 1149bboss持久层操作Clob和Blob非常方便,基于bboss ... -
bboss持久层ormaping机制详解
2013-09-04 21:04 1084bboss持久层针对db操作即提供了原始sql语句的支持,又提 ...
相关推荐
8.4.1 配置一个数据源 8.4.2 获取JNDI数据源 8.4.3 Spring的数据源实现类 8.5 小结 第9章 Spring的事务管理 9.1 数据库事务基础知识 9.1.1 何为数据库事务 9.1.2 数据并发的问题 9.1.3 数据库锁机制 9.1.4 事务隔离...
8.4.1 配置一个数据源 8.4.2 获取JNDI数据源 8.4.3 Spring的数据源实现类 8.5 小结 第9章 Spring的事务管理 9.1 数据库事务基础知识 9.1.1 何为数据库事务 9.1.2 数据并发的问题 9.1.3 数据库锁机制 9.1.4 事务隔离...
FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上...
21.1 多个事务并发运行时的并发问题 21.1.1 第一类丢失更新 21.1.2 脏读 21.1.3 虚读 21.1.4 不可重复读 21.1.5 第二类丢失更新 21.2 数据库系统的锁的基本原理 21.2.1 锁的多粒度性及自动锁升级 ...
16.2.4 为同一控件创建多个外观 16.2.5 含有模板和图片的外观 16.2.6 在主题里使用CSS 16.2.7 通过配置文件来应用主题 16.2.8 动态应用主题 16.3 标准化网站布局 16.4 母版页基础 16.4.1 简单的母版...
1.3 持久层和其他层 显示全部信息第一部分 从Hibernate和EJB 3.0开始 第1章 理解对象/关系持久化 1.1 什么是持久化 1.1.1 关系数据库 1.1.2 理解SQL 1.1.3 在Java中使用SQL 1.1.4 面向对象...
21.1 多个事务并发运行时的并发问题 21.1.1 第一类丢失更新 21.1.2 脏读 21.1.3 虚读 21.1.4 不可重复读 21.1.5 第二类丢失更新 21.2 数据库系统的锁的基本原理 21.2.1 锁的多粒度性及自动锁升级 ...
21.1 多个事务并发运行时的并发问题 21.1.1 第一类丢失更新 21.1.2 脏读 21.1.3 虚读 21.1.4 不可重复读 21.1.5 第二类丢失更新 21.2 数据库系统的锁的基本原理 21.2.1 锁的多粒度性及自动锁升级 ...
16.2.4 为同一控件创建多个外观 546 16.2.5 含有模板和图片的外观 547 16.2.6 在主题里使用CSS 549 16.2.7 通过配置文件来应用主题 549 16.2.8 动态应用主题 550 16.3 标准化网站布局 551 16.4 母版页...
3.3.1 数据源和环境 3.3.2 JNDI数据源 3.3.3 自动数据库移植 3.4 外部配置 3.5 定义版本 4. 命令行 4.1 创建Gant脚本 4.2 可复用的Grails脚本 4.3 脚本中的事件 4.4 Ant和Maven 5. 对象关系映射(GORM) 5.1 快速指南 ...
21.1 多个事务并发运行时的并发问题 21.1.1 第一类丢失更新 21.1.2 脏读 21.1.3 虚读 21.1.4 不可重复读 21.1.5 第二类丢失更新 21.2 数据库系统的锁的基本原理 21.2.1 锁的多粒度性及自动锁升级 ...
2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...
12.2 使用servlet创建动态Web页面 12.2.1 创建一个简单的servlet 12.3 创建和配置Lo9in servlet 12.3.1 实现会员Web站点 12.3.2 创建Login页面 12.3.3 创建servlet 12.3.4 部署 12.4 使用JSP 12.4.1 在JSP...
12.2 使用servlet创建动态Web页面 12.2.1 创建一个简单的servlet 12.3 创建和配置Lo9in servlet 12.3.1 实现会员Web站点 12.3.2 创建Login页面 12.3.3 创建servlet 12.3.4 部署 12.4 使用JSP 12.4.1 在JSP...
12.2 使用servlet创建动态Web页面 12.2.1 创建一个简单的servlet 12.3 创建和配置Lo9in servlet 12.3.1 实现会员Web站点 12.3.2 创建Login页面 12.3.3 创建servlet 12.3.4 部署 12.4 使用JSP 12.4.1 在JSP...
12.2 使用servlet创建动态Web页面 12.2.1 创建一个简单的servlet 12.3 创建和配置Lo9in servlet 12.3.1 实现会员Web站点 12.3.2 创建Login页面 12.3.3 创建servlet 12.3.4 部署 12.4 使用JSP 12.4.1 在JSP...
2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...