??xml version="1.0" encoding="utf-8" standalone="yes"?>a天堂中文在线,精品一区二区在线观看,久久成人在线视频http://www.aygfsteel.com/supersalor/category/40956.htmljava struts1、struts2 spring hibernate freemarker ajax fckeditor Mysql MSSQL ORACLE DB2 Websphere jboss zh-cnFri, 25 Jan 2013 02:33:13 GMTFri, 25 Jan 2013 02:33:13 GMT60memcached and Redishttp://www.aygfsteel.com/supersalor/articles/394702.html李峰李峰Thu, 24 Jan 2013 06:44:00 GMThttp://www.aygfsteel.com/supersalor/articles/394702.htmlhttp://www.aygfsteel.com/supersalor/comments/394702.htmlhttp://www.aygfsteel.com/supersalor/articles/394702.html#Feedback0http://www.aygfsteel.com/supersalor/comments/commentRss/394702.htmlhttp://www.aygfsteel.com/supersalor/services/trackbacks/394702.html
memcached好的博文Q?/span>

http://www.cnblogs.com/luluping/archive/2009/01/14/1375456.html memcached深度分析

 Redis使用场景Q?/p>

1. Redis使用最x式是全部数据in-memory?/p>

2. Redis更多场景是作为Memcached的替代者来使用?/p>

3. 当需要除key/value之外的更多数据类型支持时Q用Redis更合适?/p>

4. 当存储的数据不能被剔除时Q用Redis更合适?/p>

 

Redis好的博文Q?/p>

1.http://www.searchtb.com/2011/05/redis-storage.htmlQ来自淘宝搜索技术博?/p>

2. 来自InfoQ    

http://www.infoq.com/cn/articles/tq-why-choose-redis  Z么用redis

 http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage redis内存使用优化和存?/p>

http://www.infoq.com/cn/articles/tq-redis-copy-build-scalable-cluster redis复制与可扩展集群搭徏



李峰 2013-01-24 14:44 发表评论
]]>
Debug 提示【Tomcat??http://www.aygfsteel.com/supersalor/articles/300272.html李峰李峰Thu, 29 Oct 2009 14:15:00 GMThttp://www.aygfsteel.com/supersalor/articles/300272.htmlhttp://www.aygfsteel.com/supersalor/comments/300272.htmlhttp://www.aygfsteel.com/supersalor/articles/300272.html#Feedback0http://www.aygfsteel.com/supersalor/comments/commentRss/300272.htmlhttp://www.aygfsteel.com/supersalor/services/trackbacks/300272.htmljava.lang.NoClassDefFoundError:net/sf/cglib/proxy/CallbackFilter  ?~少cglib-2.1_3.jar

java.lang.NoClassDefFoundError:javax/transaction/TransactionManager  ?~少jta.jar

java.lang.NoClassDefFoundError: freemarker/template/Configuration  ?~少freemarker.jar

java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException  ?~少aspectjrt.jar;aspectjweaver.jar

java.lang.NoClassDefFoundError: org/dom4j/DocumentException  ?~少dom4j-1.6.1.jar

java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException  ?~少commons-fileupload-1.2.jar

java.lang.NoClassDefFoundError: org/apache/velocity/context/Context  ?~少velocity-1.4.jar;velocity-dep-1.4.jar;velocity-tools-1.1.jar

l箋整理…?/font>



李峰 2009-10-29 22:15 发表评论
]]>
freemarker中空值的多种处理Ҏhttp://www.aygfsteel.com/supersalor/articles/290715.html李峰李峰Tue, 11 Aug 2009 12:59:00 GMThttp://www.aygfsteel.com/supersalor/articles/290715.htmlhttp://www.aygfsteel.com/supersalor/comments/290715.htmlhttp://www.aygfsteel.com/supersalor/articles/290715.html#Feedback0http://www.aygfsteel.com/supersalor/comments/commentRss/290715.htmlhttp://www.aygfsteel.com/supersalor/services/trackbacks/290715.html1.按照freemarker的规范,老老实实的判断是否有空|有空值怎么处理。这在某U时候是有用的?br />格式Q?{empty!"EmptyValue of fbysss"}
比如gؓI时Q你可以l出一个友好的说明Q但是很多的变量都要q么说明Q未免太ȝ了?

2.<#escape x as x!""></#escape>可以Ҏ有的变量q行I值处理,q里是全部替换ؓI字W串。当然也可以替换为其它字W串?
如果其中某些变量不需要这U替换,可以加入<#noescape></#noescape>标签?

3.属性配|方法:
配置classic_compatible=true可以满一般需要。默认情况变量ؓnull则替换ؓI字W串Q如果需要自定义Q写?{empty!"EmptyValue of fbysss"}的Ş式即?

a.通过Configuration讄。Configuration cfg = new Configuration(); cfg.setClassicCompatible(true);//讄属?

b.通过Eviroment讄?
   Environment env = template.createProcessingEnvironment(root, out);
   env.setClassicCompatible(true);

c.通过ftl讄Q在ftl前加?lt;!--#setting classic_compatible=true-->;

d.通过Spring配置文g讄
<bean id="freemarkerConfig"
    class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  <property name="freemarkerSettings">
    <props>
      <prop key="classic_compatible">true</prop>
    </props>
  </property>
</bean>

e.class目录下添加freemarker.properties文gQ加入classic_compatible=true
(需要struts2或spring)



李峰 2009-08-11 20:59 发表评论
]]>
各种数据库驱?/title><link>http://www.aygfsteel.com/supersalor/articles/290711.html</link><dc:creator>李峰</dc:creator><author>李峰</author><pubDate>Tue, 11 Aug 2009 12:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/supersalor/articles/290711.html</guid><wfw:comment>http://www.aygfsteel.com/supersalor/comments/290711.html</wfw:comment><comments>http://www.aygfsteel.com/supersalor/articles/290711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/supersalor/comments/commentRss/290711.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/supersalor/services/trackbacks/290711.html</trackback:ping><description><![CDATA[各种数据库驱?br />  <br />-------------------------------oracle--------------------------------<br />  驱动Qoracle.jdbc.driver.OracleDriver<br />  URLQjdbc:oracle:thin:@<machine_name><:port>:dbname<br />  注:machine_nameQ数据库所在的机器的名Uͼ<br />   portQ端口号Q默认是1521<br />   <br />  -------------------------------mysql--------------------------------<br />  驱动Qorg.gjt.mm.mysql.Driver<br />  URLQjdbc:mysql://<machine_name><:port>/dbname<br />  注:machine_nameQ数据库所在的机器的名Uͼ<br />   portQ端口号Q默?306<br />   <br />  ----------------------------pointbase---------------------------------<br />  驱动Qcom.pointbase.jdbc.jdbcUniversalDriver<br />  URLQjdbc:pointbase:server://<machine_name><:port>/dbname<br />  注:machine_nameQ数据库所在的机器的名Uͼ<br />   portQ端口号Q默认是9092<br />   <br />  ---------------------------SQL Server---------------------------------<br />  驱动Qcom.microsoft.jdbc.sqlserver.SQLServerDriver<br />  URLQjdbc:microsoft:sqlserver://<machine_name><:port>;DatabaseName=<dbname><br />  注:machine_nameQ数据库所在的机器的名Uͼ<br />   portQ端口号Q默认是1433<br />  --------------------------DB2---------------------------------------------<br />  驱动Qcom.ibm.db2.jdbc.app.DB2Driver<br />  URLQjdbc:db2://<machine_name><:port>/d driver="COM.ibm.db2.jdbc.app.DB2Driver"bname<br />  注:machine_nameQ数据库所在的机器的名Uͼ<br />   portQ端口号Q默认是5000<img src ="http://www.aygfsteel.com/supersalor/aggbug/290711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/supersalor/" target="_blank">李峰</a> 2009-08-11 20:50 <a href="http://www.aygfsteel.com/supersalor/articles/290711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>选择ibatis和hibernate的区?/title><link>http://www.aygfsteel.com/supersalor/articles/288807.html</link><dc:creator>李峰</dc:creator><author>李峰</author><pubDate>Tue, 28 Jul 2009 13:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/supersalor/articles/288807.html</guid><wfw:comment>http://www.aygfsteel.com/supersalor/comments/288807.html</wfw:comment><comments>http://www.aygfsteel.com/supersalor/articles/288807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/supersalor/comments/commentRss/288807.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/supersalor/services/trackbacks/288807.html</trackback:ping><description><![CDATA[ <div style="LAYOUT-GRID: 15.6pt none" class="Section0"> <p style="TEXT-ALIGN: left; LINE-HEIGHT: 18pt; MARGIN-TOP: 5pt; MARGIN-BOTTOM: 3.75pt" class="p0"> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">目中关于持久层的选择Q我主要有两U选择Qhibernate与ibatisQ各有个的好Q现在ȝ如下Q?br /><font color="#ff1493">Hibernate?/font></span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Hibernate是一个开放源代码的对象关pL框Ӟ它对JDBCq行了非常轻量的对象封装,使得JavaE序员可以随心所Ʋ的使用对象~程思维来操U|据库。Hibernate可以应用在Q何用JDBC的场合,既可以在Java的客LE序使用Q也可以在Servlet/JSP的Web应用中用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMPQ完成数据持久化的重仅R?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">一、基本功?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Hibernate作ؓ数据持久化的中间Ӟ以让数据库在业务逻辑层开发中d眠。它通过可扩展标记语aQXMLQ实Ccd数据表之间的映射QɽE序员在业务逻辑的开发中面向数据库而改为面向对象开发。整个目开发分工更加明,提高了程序开发的效率?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">configuration对象Q?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Configuration c负责管理Hibernate 的配|信息。Hibernate q行旉?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">获取一些底层实现的基本信息Q其中几个关键属性包括:</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">1Q 数据库URL</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">2Q 数据库用户</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">3Q 数据库用户密码</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">4Q 数据库JDBC驱动c?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">5Q数据库dialectQ用于对特定数据库提供支持,其中包含了针对特定数据库Ҏ的实现Q如Hibernate数据cd到特定数据库数据cd的映等?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">以上信息一般情况下由hibernate.cfg.xml或者hibernate.properties文g来配|,实现与不同数据库的连接?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Session对象Q?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Session是持久层操作的基Q相当于JDBC中的Connection:</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">实例通过SessionFactory实例构徏:</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Configuration config = new Configuration().configure();</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">SessionFactory sessionFactory = config.buildSessionFactory();</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Session session = sessionFactory.openSession();</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">之后我们可以调用Session所提供的save、find、flush{方法完成持久层操作。因此Session对象也封装了所有对数据库的操作来实现HibernateҎ据库的操U功能,如:</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Save()Ҏ实现增加和保存;</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Delete()Ҏ实现数据的删除;</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Update()Ҏ实现数据更新和修改;</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Find()Ҏ实现数据的检索;</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Hibernate会根据不同的操作自动生成相应的SQL语句Q从而实CE序员对PO对象的操作{化ؓҎ据库关系表的操作?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">二、用步?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">1Q编写Hibernate配置文g</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">       Hibernate配置文g有两U,分别是hibernate.cfg.xml文g和hibernate.properties,推荐使用hibernate.cfg.xml?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">2QPO和映文?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">使用middlegen和hibernate-extensions从数据库导出PO的映文Ӟq在hibernate.cfg.xml当中声明?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">3Q编写DAO</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">       Ҏ一张关p表~写一个DAOQ提供一l增、删、改、查Ҏ供业务逻辑Ҏ据库操作使用?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?> <o:p> </o:p> </span> </p> <p style="TEXT-ALIGN: left; LINE-HEIGHT: 18pt; MARGIN-TOP: 5pt; MARGIN-BOTTOM: 3.75pt" class="p0"> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <o:p> </o:p> </span> </p> <p style="TEXT-ALIGN: left; LINE-HEIGHT: 18pt; MARGIN-TOP: 5pt; MARGIN-BOTTOM: 3.75pt" class="p0"> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <font color="#ff1493">Ibatis?/font> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">相对Hibernate和Apache OJB {?一站式"ORM解决Ҏ而言Qibatis 是一U?半自动化"的ORM实现。所?半自?Q可能理解上有点生ӆ。纵观目前主的ORMQ无论Hibernate q是Apache OJBQ都Ҏ据库l构提供了较为完整的装Q提供了从POJO 到数据库表的全套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系Q即可通过Hibernate或者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟l掌握,Hibernate/OJB 会根据制定的存储逻辑Q自动生成对应的SQL q调用JDBC 接口加以执行?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Ibatis最直接的好处就是不但ؓE序员提供了对象与关pL据库之间的映,同时提供操作Ҏ与SQL间的直接影射Q设计者可以直接ؓ一个方法指定一条SQL语句Q从而取得更加准的数据Q同时ؓ优化查询、连接查询提供了方便?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">一、基本功?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">作ؓ又一个轻量的ORM中间Ӟibatis除了提供了对数据库基本的增、删、改、查外还提供了连接管理,~存支持Q线E支持,Q分布式Q事物管理等一套教为完整的数据库管理功能?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">SqlMapClient对象是ibatis持久层操作的基础Q相当于hibernate中的sessionQ提供对SQL映射的方法?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">insert()Ҏ实现Ҏ入SQL语句的映;</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">delete()Ҏ实现对删除SQL语句的映;</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">update()Ҏ实现Ҏ新SQL语句的媄;</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">queryForList()、queryForMap()、queryForObject()、queryForPaginatedList(){方法提供了一l查询SQL语句的媄;</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">二、用步?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">1Qibatis SQL Map 配置文g</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">       文g中对所用数据库的连接做了基本配|,包括数据库驱动类型、用户名、密码,以及q接池的相关理数据?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">2QPO和映文?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">       和hibernate一PPO作ؓ数据库关p表的媄,也需要响应的映射配置文gQ可以手写,也可以借助hibernate的相兛_L成POQ不会媄响PO在ibatis中的使用。与hibernate不同的是Qibatis的映文件中没有对PO中每个属性做响应的描qͼ而是指定了一pd与PO有关的SQL相关操作Q也体现了ibatis良好的灵zL与可扩展性?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">3Q编写DAO</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">       在DAO中,可以使用SqlMapClient提供的方法来对应的指定对PO操作的SQL语句Q从而业务逻辑层的开发仍然是面向对象的操作?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <o:p> </o:p> </span> </p> <p style="TEXT-ALIGN: left; LINE-HEIGHT: 18pt; MARGIN-TOP: 5pt; MARGIN-BOTTOM: 3.75pt" class="p0"> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <o:p> </o:p> </span> </p> <p style="TEXT-ALIGN: left; LINE-HEIGHT: 18pt; MARGIN-TOP: 5pt; MARGIN-BOTTOM: 3.75pt" class="p0"> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">选择Hibernateq是iBATIS都有它的道理Q?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Hibernate的特点:</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">Hibernate功能强大Q数据库无关性好QO/R映射能力强,如果你对Hibernate相当_N,而且对Hibernateq行了适当的封装,那么你的目整个持久层代码会相当单,需要写的代码很,开发速度很快Q非常爽。以数据库字D一一对应映射得到的PO和Hibernteq种对象化映得到的PO是截然不同的Q本质区别在于这UPO是扁q_的,不像Hibernate映射的PO是可以表辄体的对象l承Q聚合等{关pȝQ这会直接影响C的整个Y件系l的设计思\。HibernateҎ据库l构提供了较为完整的装QHibernate的O/R Mapping实现了POJO 和数据库表之间的映射Q以及SQL 的自动生成和执行。程序员往往只需定义好了POJO 到数据库表的映射关系Q即可通过Hibernate 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟l掌握, Hibernate/OJB 会根据制定的存储逻辑Q自动生成对应的SQL q调用JDBC 接口加以执行。Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射Q在性能和对象模型之间如何权衡取得^衡,以及怎样用好Hibernate斚w需要你的经验和能力都很强才行,但是Hibernate现在已经是主O/R Mapping框架Q从文档的丰富性,产品的完善性,版本的开发速度都要ZiBATIS?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">iBATIS的特点:</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">iBATIS入门单,卛_即用Q提供了数据库查询的自动对象l定功能Q而且延箋了很好的SQL使用l验Q对于没有那么高的对象模型要求的目来说Q相当完。iBATIS的缺点就是框架还是比较简陋,功能有~失Q虽然简化了数据l定代码Q但是整个底层数据库查询实际q是要自己写的,工作量也比较大,而且不太Ҏ适应快速数据库修改。当pȝ属于二次开?无法Ҏ据库l构做到控制和修?那iBATIS的灵zL将比Hibernate更适合。系l数据处理量巨大Q性能要求极ؓ苛刻Q这往往意味着我们必须通过l过高度优化的SQL语句Q或存储q程Q才能达到系l性能设计指标。在q种情况下iBATIS会有更好的可控性和表现?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">对于实际的开发进行的比较Q?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">1Q iBATIS需要手写sql语句Q也可以生成一部分QHibernate则基本上可以自动生成Q偶会写一些Hql。同L需?iBATIS的工作量比 Hibernate要大很多。类似的Q如果涉及到数据库字D늚修改QHibernate修改的地方很,而iBATIS要把那些sql mapping的地方一一修改?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">2. iBatis 可以q行l粒度的优化</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">比如说我有一个表Q这个表有几个或者几十个字段Q我需要更新其中的一个字D,iBatis 很简单,执行一个sql UPDATE TABLE_A SET column_1=#column_1# WHERE id=#id# 但是用 Hibernate 的话比较麻烦了,~省的情况下 hibernate 会更新所有字Dc 当然我记得 hibernate 有一个选项可以控制只保存修改过的字D,但是我不太确定这个功能的负面效果?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">例如Q我需要列Z个表的部分内容,用 iBatis 的时候,q里面的好处是可以少从数据库d多数据,节省量SELECT ID, NAME FROM TABLE_WITH_A_LOT_OF_COLUMN WHERE ...一般情况下Hibernate 会把所有的字段都选出来。比如说有一个上面表?个字D,其中有一两个比较大的字段Qvarchar(255)/text。上面的场景中我Z么要把他们也选出来呢Q用hibernate 的话Q你又不能把q两个不需要的字段讄为lazy loadQ因有很多地斚w要一ơ把整个 domain object 加蝲出来。这个时候就能显现出ibatis 的好处了。如果我需要更C条记录(一个对象)Q如果用 hibernateQ需要现把对象 select 出来Q然后再做 update。这Ҏ据库来说是两条sql。而iBatis只需要一条update的sql可以了。减一ơ与数据库的交互Q对于性能的提升是非常重要?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">3. 开发方面:</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">开发效率上Q我觉得两者应该差不多。可l护性方面,我觉得 iBatis 更好一些。因为 iBatis 的 sql 都保存到单独的文件中。而 Hibernate 在有些情况下可能会在 java 代码中保sql/hql。相对Hibernate“O/R”而言QiBATIS 是一U“Sql Mapping”的ORM实现。而iBATIS 的着力点Q则在于POJO 与SQL之间的映关pR也是_iBATISq不会ؓE序员在q行期自动生成SQL 执行。具体的SQL 需要程序员~写Q然后通过映射配置文gQ将SQL所需的参敎ͼ以及q回的结果字D|到指定POJO。用iBATIS 提供的ORM机制Q对业务逻辑实现人员而言Q面对的是纯_的Java对象Q这一层与通过Hibernate 实现ORM 而言基本一_而对于具体的数据操作QHibernate会自动生成SQL 语句Q而iBATIS 则要求开发者编写具体的SQL 语句。相对Hibernate而言QiBATIS 以SQL开发的工作量和数据库移植性上的让步,为系l设计提供了更大的自q间?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">4. q行效率</span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <br /> </span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'">在不考虑 cache 的情况下QiBatis 应该会比hibernate 快一些或者很多?/span> <span style="FONT-FAMILY: '宋体'; COLOR: rgb(42,42,42); FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <o:p> </o:p> </span> </p> <p style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt" class="p0"> <span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-spacerun: 'yes'"> <o:p> </o:p> </span> </p> </div> <!--EndFragment--> <img src ="http://www.aygfsteel.com/supersalor/aggbug/288807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/supersalor/" target="_blank">李峰</a> 2009-07-28 21:35 <a href="http://www.aygfsteel.com/supersalor/articles/288807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">۽</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ԫ</a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank">踽</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ͻ</a>| <a href="http://" target="_blank">½</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">߮</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">Ͷ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>