Spring 和 JavaEE的关系
Spring 和 JavaEE的关系
Finley.Hamilton 发表于3年前
Spring 和 JavaEE的关系
  • 发表于 3年前
  • 阅读 364
  • 收藏 11
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: Spring 和 JavaEE的关系,在学Spring之前要弄清楚

Java EE vs Spring. Or: What is a standard?

什么是JavaEE

J2EE是一系列技术标准所组成的平台。 JavaEE包含了对一系列标准(接口)的实现。 如果你要用这些接口,恐怕要使用JavaEE服务器而不仅仅是一个Servlet容器

Servlet-API

Servlet变准是如何执行的

因为汤姆猫实现了servlet-api所以它知道怎么去找web.xml文件。

JPA规范

对于tomcat来说,他没有实现JPA规范,所以当你真的要在你的web应用里头实现数据库访问

  • 可以简单使用JDBC,这一点是不受限制的,因为JDBC不是JavaEE的东西,大家都可以用,JDBC只是Java数据库连接

看一下人家sqlite实现的接口

package org.sqlite;

public class JDBC implements java.sql.Driver {
    public static final java.lang.String PREFIX = "jdbc:sqlite:";

    public JDBC() { /* compiled code */ }

    public int getMajorVersion() { /* compiled code */ }

    public int getMinorVersion() { /* compiled code */ }

    public boolean jdbcCompliant() { /* compiled code */ }

    public boolean acceptsURL(java.lang.String url) { /* compiled code */ }

    public static boolean isValidURL(java.lang.String url) { /* compiled code */ }

    public java.sql.DriverPropertyInfo[] getPropertyInfo(java.lang.String url, java.util.Properties info) throws java.sql.SQLException { /* compiled code */ }

    public java.sql.Connection connect(java.lang.String url, java.util.Properties info) throws java.sql.SQLException { /* compiled code */ }

    static java.lang.String extractAddress(java.lang.String url) { /* compiled code */ }

    public static java.sql.Connection createConnection(java.lang.String url, java.util.Properties prop) throws java.sql.SQLException { /* compiled code */ }
}
  • 一定要使用JPA的话,可以参考这篇文章 JDBC改JPA

JDBC访问数据库的主要工作包括:

  • 得到JDBC驱动程序;
  • 使用DriverManager,Connection,Statement,ResultSet等; 而使用JPA完成数据的操作包括:
  • 得到JDBC驱动程序;
  • 得到持久性提供者相关类库和配置文件;
  • 提供实体类;
  • 使用Persistence、EntityManagerFactory和Entity等接口。

而工业界类似于JPA规范的,有Hibernate

Spring

那么问题来了,Spring依赖了什么javaee规范呢?

Spring只依赖于servlet-api。

但是,Spring的可扩展性强得令人发指,对于实现JPA规范,他有Spring Data JPA, 它依赖于openjpa-persistence-jdbc,而openjpa实现了JSR-317 Java Persistence 2.0规范,所以的话它仍旧是可以在Tomcat里头用。注意JPA规范用的是persitence.xml的配置文件,这个好理解,跟web.xml是一个道理的。

回过头来,如果你不想用JPA,大可以用Spring自带的JDBCTemplate,它是处在org.springframework.jdbc.core里头的。

总结

Spring的核心仍然在于CDI,正是因为这个原因,哪怕它不去实现大部分的JavaEE规范,它也可以去兼容这些规范的实现,然后利用CDI,注入这些实现。

认识还不够全面,希望以后还能再改改这篇文章。

标签: spring javaee
共有 人打赏支持
Finley.Hamilton
粉丝 4
博文 44
码字总数 15431
×
Finley.Hamilton
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: