This commit is contained in:
Redkale
2017-03-01 20:49:32 +08:00
parent 6ba475ab96
commit b0096c29b9

View File

@@ -26,10 +26,12 @@
<h3>Redkale 技术详解 04 -- Java DataSource简易的DB操作</h3>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;长期以来Hibernate和Mybatis一直是大家使用最多的持久层开发框架。针对这两种框架网络上是各种比较各种讨论优缺点。其实这两个框架都是2002年左右发布的(算上前身ibatis)如同当年Spring鄙视JavaEE是庞然大物一样现如今Spring、Hibernate、Mybatis这些老框架经历了15个年头也已笨重不堪,Mybatisjar包近6MHibernate加上依赖包更是大得离谱。一个Tomcat(不算webapps)也不过才7-8M 而一个DB框架
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;长期以来Hibernate和Mybatis一直是大家使用最多的持久层开发框架。针对这两种框架网络上是各种比较各种讨论优缺点。其实这两个框架(算上前身ibatis)都是2002年左右发布, 迄今已有15载已笨重不堪,一个mybatis.jar包大小6M左右Hibernate更是巨大毫无轻巧灵活可言提供简化SQL操作的同时带来了复杂繁琐的配置和高学习门槛。而Redkale的Source组件非常轻量级通过十多个<span style="color: #2041B4;">interface</span><span style="color: #2041B4;">enum</span>和十多个<span style="color: #2041B4;">class</span>完成常见的DB操作功能。<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Source组件在接口设计上参考了JPA接口为了降低学习成本 部分注解仍沿用javax.persistence中的类以多个注解结合一个主操作类 <a href="http://redkale.org/javadoc/org/redkale/source/DataSource.html" target="_blank">DataSource</a> 的方式提供API。虽没有IDE的插件支持但Redkale也提供一个Demo代码<a href="https://github.com/redkale/redkale-demo/blob/master/src/org/redkale/demo/base/AutoClassCreator.java" target="_blank"> AutoClassCreator</a> 能很方便的将数据库表生成Entity类。
</p>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Creator是一个接口 只有一个public T create(Object... params)方法可变参数既适合空参数的Constructor也适合含参数的Constructor。得利于Java 8的新语法特性可以在接口上加上静态方法Creator对象可以通过Creator.create(Class clazz)方法创建。构建原理是通过Constructor的参数来动态创建的。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
<div class="highlight"><pre><span class="n">Constructor</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;</span> <span class="n">constructor0</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
<span class="k">for</span> <span class="o">(</span><span class="n">Constructor</span> <span class="n">c</span> <span class="o">:</span> <span class="n">clazz</span><span class="o">.</span><span class="na">getConstructors</span><span class="o">())</span> <span class="o">{</span> <span class="c1">//优先找public 的构造函数</span>